poj2524Ubiquitous Religions

来源:互联网 发布:java list泛型 遍历 编辑:程序博客网 时间:2024/06/05 05:48

http://poj.org/problem?id=2524

并查集的基本操作,路径压缩等

<span style="font-size:18px;">#include <stdio.h>int parent[50005],count;/*思想:每次查找的时候,如果路径较长,则修改信息,以便下次查找的时候速度更快*/int find (int x)//带路径压缩的查找算法{    int r;for (r = x; parent[r] != r; r = parent[r]); //循环结束,则找到根节点while ( x != r ) //修改查找路径上的所有节点,将它们都指向根结点{int s = parent[x];parent[x] = r;x = s;}return r;}int unite(int x,int y){int u,v;    u=find(x);    v=find(y);    if(u!=v)     {    parent[u]=v;     count--;    }}int main(){int n,m,x,i,j,c=1;while(scanf("%d %d",&n,&m)!=EOF){    count=n;if(n==0&&m==0)break;for(x=1;x<=n;x++)parent[x]=x;    for(x=1;x<=m;x++)    {        scanf("%d %d",&i,&j);    unite(i,j);}printf("Case %d: %d\n",c++,count);}return 0;}</span>



0 0