并查集 Corporative Network POJ 1962
2014-08-12 18:39
381 查看
输入E X,表示查找X到根节点的距离;输入I X Y表示将X连接至Y后(Y作为父节点)
提示
1)两点之间的距离要%1000,但是计算到根节点距离时不用%1000
提示
1)两点之间的距离要%1000,但是计算到根节点距离时不用%1000
#include <stdio.h> #include <string.h> int f[20005]; int num[20005]; int aaa(int a) { return a<0?-a:a; } int find(int i) { if(i==f[i]) return f[i]; int a=f[i]; f[i]=find(f[i]); num[i]+=num[a]; //递归更新num数组的值 return f[i]; } int main() { int t,n; int i,j; char s[3]; int a,b; while(scanf("%d",&t)!=-1) { while(t--) { scanf("%d",&n); memset(num,0,sizeof(num)); for(i=0;i<20005;i++) f[i]=i; while(scanf("%s",s)&&s[0]!='O') { if(s[0]=='E') { scanf("%d",&a); b=find(a); printf("%d\n",num[a]); } if(s[0]=='I') { scanf("%d%d",&a,&b); f[a]=b; num[a]=aaa(a-b)%1000; //两个点之间的距离要%1000,但是加和不用 } } } } return 0; }
相关文章推荐
- POJ1962 - Corporative Network - 并查集
- poj 1962 Corporative Network 并查集,很容易超时,大家要注意合并
- Corporative Network +uvalive+并查集
- POJ 1861 Network [最小生成树算法MST-kruskal 数据结构-并查集 union-find sets]
- poj 1962 Corporative Network 并查集的应用
- poj 1962 带权并查集
- POJ 1962/ ZOJ 2178: Corporative Network - 并查集
- Wireless Network POJ - 2236 -并查集
- poj1962 Corporative Network(带权并查集)
- poj 1861 Network(并查集)
- poj-2236 Wireless Network &&poj-1611 The Suspects && poj-2524 Ubiquitous Religions (基础并查集)
- POJ 1861 Network (并查集的应用,kruskal)
- LA 3027 Corporative Network / 并查集
- POJ 1962-Corporative Network (并查集)
- POJ1962:Corporative Network(并查集)
- C - Corporative Network UVA - 1329 (并查集)
- POJ-3694-Network(Tarjan+LCA+并查集)
- POJ Wireless Network (并查集)
- C - Corporative Network UVA - 1329 -加权并查集
- UVALive 3027---Corporative Network+并查集的应用