题目:PAT1013
题解:裸的并查集,大佬在前阵子刚刚讲过,附上一个个人觉得讲的十分好的博客
某个城市陷入战争,也就相当于把这个点去除后做并查集,然后查看有多少分支。
最后一个点一直报段错误...又是数组开小了...有n个顶点的强连通图有n(n-1)条路径,我最刚开始只开了n条...
代码:
1 #include2 #define maxn 1005 3 using namespace std; 4 5 int x[maxn*maxn],y[maxn*maxn],par[maxn],tar[maxn],city,n,m,k; 6 7 int findx(int x) 8 { 9 return par[x]==x?x:findx(par[x]);10 }11 12 void unionx(int x,int y)13 {14 x=findx(x);y=findx(y);15 if(tar[x]