Ice_cream's world I
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 898 Accepted Submission(s): 526
One answer one line.
8 10 0 1 1 2 1 3 2 4 3 4 0 5 5 6 6 7 3 6 4 7
3
//判断有几个环,环中没有灯塔,没有任何东西,简简单单的并查集,最后判断一共有几个重边
#include<cstdio>
int per[1111];
int k=0;
int find(int x)
{
int t=x;
while (t!=per[t])
t=per[t];
per[x]=t;
return t;
}
void un(int a,int b)
{
int xa = find(a);
int xb = find(b);
if (xb!=xa)
per[xb]=xa;
else
k++;
}
int main()
{
int x,n,m,y;
while (~scanf ("%d%d",&n,&m))
{
k=0;
for (int i=0;i<n;i++)
{
per[i]=i;
}
while (m--)
{
scanf ("%d%d",&x,&y);
un(x,y);
}
printf ("%d\n",k);
}
return 0;
}