hdu 2545(并查集求节点到根节点的距离)

来源:互联网 发布:声学模拟软件 编辑:程序博客网 时间:2024/06/06 02:01

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2545

思路:dist[u]表示节点u到根节点的距离,然后在查找的时候更新即可,最后判断dist[u],dist[v]的大小即可。

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 using namespace std; 7 #define MAXN 101000 8  9 int n,m;10 int parent[MAXN];11 int dist[MAXN];12 13 int Find(int x)14 {15     if(x==parent[x]){16         return parent[x];17     }18     int tmp=parent[x];19     parent[x]=Find(parent[x]);20     dist[x]+=dist[tmp];//更新到根节点的距离21     return parent[x];22 }23 24 int main()25 {26     int u,v;27     while(~scanf("%d%d",&n,&m)){28         if(n==0&&m==0)break;29         for(int i=1;i<=n;i++){30             parent[i]=i;31             dist[i]=0;32         }33         for(int i=1;i<n;i++){34             scanf("%d%d",&u,&v);35             parent[v]=u;36             dist[v]=1;37         }38         while(m--){39             scanf("%d%d",&u,&v);40             Find(u);41             Find(v);42             if(dist[u]<=dist[v]){43                 puts("lxh");44             }else 45                 puts("pfz");46         }47     }48     return 0;49 }
View Code

 

0 0
原创粉丝点击