1213 并查集
Code
#include?<iostream>
using?namespace?std;
int?parent[1005];
int?find(int?x)
{
?int?r=x;
?while(?parent[r]!=r?)//找出?x?的根結點
??r=parent[r];
?return?r;
}
int?merge(int?x,int?y)
{
?int?px,py;
?px=find(x);
?py=find(y);
?if(?px!=py?)//把?x?合并到?y?集合里
??parent[px]=py;
?return?0;
}
int?main()
{
?freopen("acm.txt","r",stdin);
?int?t,n,m,x,y,count,i;
?cin>>t;
?while(?t--?)
?{
??cin>>n>>m;
??for(i=1;i<=n;i++)
???parent[i]=i;
??while(?m--?)
??{
???cin>>x>>y;
???merge(x,y);
??}
??count=0;
??for(i=1;i<=n;i++)
??{
???if(?parent[i]==i?)//根節點等于本身的是一個集合
????count++;
??}
??cout<<count<<endl;
?}
?return?0;
}
#include?<iostream>
using?namespace?std;
int?parent[1005];
int?find(int?x)
{
?int?r=x;
?while(?parent[r]!=r?)//找出?x?的根結點
??r=parent[r];
?return?r;
}
int?merge(int?x,int?y)
{
?int?px,py;
?px=find(x);
?py=find(y);
?if(?px!=py?)//把?x?合并到?y?集合里
??parent[px]=py;
?return?0;
}
int?main()
{
?freopen("acm.txt","r",stdin);
?int?t,n,m,x,y,count,i;
?cin>>t;
?while(?t--?)
?{
??cin>>n>>m;
??for(i=1;i<=n;i++)
???parent[i]=i;
??while(?m--?)
??{
???cin>>x>>y;
???merge(x,y);
??}
??count=0;
??for(i=1;i<=n;i++)
??{
???if(?parent[i]==i?)//根節點等于本身的是一個集合
????count++;
??}
??cout<<count<<endl;
?}
?return?0;
}
轉載于:https://www.cnblogs.com/anderson0/archive/2009/05/13/1455777.html
總結
- 上一篇: 为何出现Error Loading Mi
- 下一篇: 日期转换格式