HDU---1213
简单并查集
可以看做是最小生成树的前身 (krustral---先按权值排,然后用并查集)
#include<iostream>
using namespace std;
int parent[1005];
int find(int a)
{
if(parent[a]==a) return a;
else
{
parent[a]=find(parent[a]);
return parent[a];
}
}
void UnionParent(int a,int b)
{
int x=find(a);
int y=find(b);
parent[x]=y;
}
int main()
{
int Tcase,m,n,x,y,i;
cin>>Tcase;
while(Tcase--)
{
int num=0;
cin>>n>>m;
for( i=1;i<=n;i++)
parent[i]=i;
for( i=1;i<=m;i++)
{
cin>>x>>y;
UnionParent(x,y);
}
for(i=1;i<=n;i++)
{
if(i==parent[i]) num++;
}
cout<<num<<endl;
}
return 0;
}
浙公网安备 33010602011771号