水。。。。。
红果果的并查集。。。。题意就是给了N个城市,M个路,就是求,去掉第Ki个城市,需要添加多少条路才能把所有的城市都连起来。。。
脑残数组开小了一次。弄出来一个段错误,傻乎乎的去百度了段错误半天。。。。。。
#include <stdio.h>
int fa[1005],a[1005*1005],b[1005*1005];
int n,m,k;
int Find(int x)
{
if(x!=fa[x])return Find(fa[x]);
return x;
}
void Union(int x,int y)
{
x=Find(x);
y=Find(y);
if(x!=y)fa[y]=x;
}
int main()
{
int city;
int sum;
scanf("%d %d %d",&n,&m,&k);
for(int i=0;i<m;i++)
scanf("%d %d",&a[i],&b[i]);
while(k--)
{
scanf("%d",&city);
for(int i=0;i<=n;i++)
fa[i]=i;
for(int i=0;i<m;i++)
if(a[i]!=city&&b[i]!=city)
Union(a[i],b[i]);
sum=0;
for(int i=1;i<=n;i++)
if(fa[i]==i&&i!=city)sum++;
printf("%d\n",sum-1);
}
return 0;
}