UVALive 3027 Corporative Network
来源:互联网 发布:java调用dll中的方法 编辑:程序博客网 时间:2024/05/08 14:10
---恢复内容开始---
Corporative Network
[Submit] [Go Back] [Status]
Description
A very big corporation is developing its corporative network. In the beginning each of the N enterprises of the corporation, numerated from 1 to N, organized its own computing and telecommunication center. Soon, for amelioration of the services, the corporation started to collect some enterprises in clusters, each of them served by a single computing and telecommunication center as follow. The corporation chose one of the existing centers I (serving the cluster A) and one of the enterprises J in some cluster B (not necessarily the center) and link them with telecommunication line. The length of the line between the enterprises I and J is |I J|(mod 1000). In such a way the two old clusters are joined in a new cluster, served by the center of the old cluster B. Unfortunately after each join the sum of the lengths of the lines linking an enterprise to its serving center could be changed and the end users would like to know what is the new length. Write a program to keep trace of the changes in the organization of the network that is able in each moment to answer the questions of the users.
Input
E I asking the length of the path from the enterprise I to its serving center in the moment;The test case finishes with a line containing the word O. The I commands are less than N.
I I J informing that the serving center I is linked to the enterprise J.
Output
Sample Input
14E 3I 3 1E 3I 1 2E 3I 2 4E 3O
Sample Output
0235
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=200020;int pre[maxn],n,d[maxn];int abs(int x) { return x<0?-x:x; }void Init(int n){ for(int i=0;i<=n+10;i++) { d[i]=0,pre[i]=i; }}int find(int x){ int y=pre[x],z; if(x==pre[x]) { return pre[x]; } else { z=find(y); pre[x]=z; d[x]=d[x]+d[y]; return pre[x]; }}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d",&n); Init(n); char s[3];int a,b; while(scanf("%s",s)) { if(s[0]=='O') break; if(s[0]=='I') { scanf("%d%d",&a,&b); pre[a]=b; d[a]=abs(a-b)%1000; } else if(s[0]=='E') { scanf("%d",&a); find(a); printf("%d\n",d[a]); } } } return 0;}
---恢复内容结束---
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive - 3027 Corporative Network
- UVALive 3027 Corporative Network
- UVALive - 3027 Corporative Network 并查集
- 【暑假】[实用数据结构]UVAlive 3027 Corporative Network
- UVALive 3027 Corporative Network 并查集水题
- uvalive 3027 Corporative Network 并查集+路径压缩
- UVALive - 3027Corporative Network(带权并查集)
- UVALive - 3027 - Corporative Network (并查集!!)
- UVALive - 3027 Corporative Network 并查集+向量
- UVALive 3027---Corporative Network+并查集的应用
- UVALive 3027 Corporative Network (带权并查集)
- uvalive 3027 Corporative Network(并查集)
- uvalive 3027 Corporative Network(种类并查集)
- ZOJ 3703 Happy Programming Contest
- ZOJ 3699 Dakar Rally
- 提高性能:用RequireJS优化Wijmo Web页面
- UVALive 4329 Ping pong
- 不用Visual Studio,5分钟轻松实现一张报表
- UVALive 3027 Corporative Network
- Linux静态IP设置
- 报表,是件容易的事吗?
- UVA - 11235 Frequent values
- 一个Web页面的问题分析
- UvaLA 3938 "Ray, Pass me the dishes!"
- ISO——对象归档的基本概念和用法
- HDOJ 4770 Lights Against Dudely
- UVA 1401 Remember the Word