标签:lse blank inf find pos sap img count %s
InputThe first line of the input is a single positive integer T(0 < T <= 100).
For each case, the first line contains two integers: N and Q (2 < N <= 10000 , 2 < Q <= 10000).
Each of the following Q lines contains either a fact or a question as the follow format:
T A B : All the dragon balls which are in the same city with A have been transported to the city the Bth ball in. You can assume that the two cities are different.
Q A : WuKong want to know X (the id of the city Ath ball is in), Y (the count of balls in Xth city) and Z (the tranporting times of the Ath ball). (1 <= A, B <= N)OutputFor each test case, output the test case number formated as sample output. Then for each query, output a line with three integers X Y Z saparated by a blank space.Sample Input
2 3 3 T 1 2 T 3 2 Q 2 3 4 T 1 2 Q 1 T 1 3 Q 1
Sample Output
Case 1: 2 3 0 Case 2: 2 2 1 3 3 2
并查集带权问题
//这道题感觉有一个坑,,,就是当一个城市的龙珠被挪走,那么这个城市就没用了,不会再有龙珠移动过来了 //因为T A B (A和B都是龙珠),所以根节点的龙珠的下标就对应着他所在的城市, //所以寻找某一个龙珠所在的城市我们只需要求它的根节点就好了。求一个城市中龙珠的个数, //无非就是求这个根节点这棵树上有多少个子节点(自己也算)。主要是求龙珠移动的次数。 //我们开一个数组记录,先初始化为0,当连接某两个龙珠时,我们连接的是这两个龙珠的根节点, //然后我们先让根节点移动,然后让根节点的上一个节点移动,,,以此类推,,。 #include<cstdio> #include<cstring> using namespace std; const int N=1E5+7; int fa[N];//记录父节点 int son[N];//记录树的大小 int ran[N];//记录移动次数 int find(int x){ if(x==fa[x]) return fa[x]; else { int k=fa[x]; fa[x]=find(fa[x]); ran[x]+=ran[k];//这里主要是用来传递根节点的移动。 return fa[x]; } } void join(int x,int y){ int fx=find(x),fy=find(y); if(fx!=fy){ fa[fx]=fy; son[fy]+=son[fx]; ran[fx]++;//先让根节点移动 } } //初始化 void inint(int x){ memset(ran,0,sizeof(ran)); for(int i=1;i<=x;i++){ fa[i]=i; son[i]=1; } } int main(){ int t,kk=0; scanf("%d",&t); while(t--){ kk++; printf("Case %d:\n",kk); int n,m; scanf("%d%d",&n,&m); inint(n); for(int i=1;i<=m;i++){ char a[10]; scanf("%s",a); if(a[0]==‘T‘){ int x,y; scanf("%d%d",&x,&y); join(x,y); } else if(a[0]==‘Q‘){ int z; scanf("%d",&z); int m=find(z); printf("%d %d %d\n",m,son[m],ran[z]); } } } return 0; }
标签:lse blank inf find pos sap img count %s
原文地址:https://www.cnblogs.com/Accepting/p/11306384.html