UVa 10765 - Doves and bombs(割点,双连通分量)

求各点所在的双连通分量个数,水题

#include 
#include 
#include 
#include 
#include 
#include 
#define maxn 10005
using namespace std;

struct Edge{
  int u;
  int v;
};

struct node{
  int no;
  int p;
};

int pre[maxn],iscut[maxn],bccno[maxn],dfs_clock,bcc_cnt;
vector G[maxn],bcc[maxn];
node a[maxn];
stack S;

int cmp(node a,node b)
{
    return a.p>b.p||(a.p==b.p&&a.no=pre[u])
            {
                iscut[u]=true;
                bcc_cnt++;
                bcc[bcc_cnt].clear();
                for(;;)
                {
                    Edge x=S.top();
                    S.pop();
                    if(bccno[x.u]!=bcc_cnt)
                    {
                        bcc[bcc_cnt].push_back(x.u);
                        a[x.u].p++;
                        bccno[x.u]=bcc_cnt;
                    }
                    if(bccno[x.v]!=bcc_cnt)
                    {
                        bcc[bcc_cnt].push_back(x.v);
                        a[x.v].p++;
                        bccno[x.v]=bcc_cnt;
                    }
                    if(x.u==u&&x.v==v)break;
                }
            }
        }
        else if(pre[v]


你可能感兴趣的:(搜索+图)