Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:WA ,RE,TLE的统统往这里看~~~~~~In Reply To:WA ,RE,TLE的统统往这里看~~~~~~ Posted by:rdy2012 at 2013-01-25 20:33:03 > /* > 这道题告诉我们,有什么事找老大说去。。。 > 还有,我是卖切糕的。。 > */ > > # include<cstdio> > # include<cstring> > using namespace std; > > # define N 100005 > > int father[N],Rank[N],opp[N]; //opp表示它的敌对势力 =。= > > void make_set(int n) > { > int i; > for(i=1;i<=n;i++) > { > father[i]=i; > opp[i]=Rank[i]=0; //刚出道,没有敌对势力 > } > > } > > int find(int r) //小弟全部得跟老大姓 > { > if(father[r]!=r) > father[r]=find(father[r]); > return father[r]; > } > > void merge(int a,int b) //a,b成一家 > { > a=find(a); > b=find(b); > if(a==b) > return; > if(Rank[a]>Rank[b]) > father[b]=a; > else > { > father[a]=b; > if(Rank[a]=Rank[b]) > Rank[b]++; > } > } > > int main() > { > int i,n,m,a,b,t,head_a,head_b; > char op[10]; > scanf("%d",&t); > while(t--) > { > scanf("%d%d",&n,&m); > make_set(n); > for(i=1;i<=m;i++) > { > scanf("%s%d%d",op,&a,&b); > head_a=find(a); //找出他们各自的老大 > head_b=find(b); > > if(op[0]=='A') > { > if(head_a==head_b) //同一个势力,兄弟见面了 > printf("In the same gang.\n"); //哥俩好呀! > else if(head_a==find(opp[head_b])) //什么,你不认识我? |-- 没关系,我认识你们一个人的老大就是他(我情敌的老大就是你,所以你就是我敌人) > printf("In different gangs.\n"); //去你丫的!!! > else > printf("Not sure yet.\n"); //大哥,我什么都不知道啊 > } > else > { > if(opp[a]==0) //没有敌对势力,毕竟刚出道嘛 > opp[a]=head_b; //他的敌对势力就是b所在的势力 > if(opp[b]==0) //纯洁的孩子啊 > opp[b]=head_a; //就看你不爽,咋地~~~~ > merge(a,opp[head_b]); //加到自己的势力去,投靠老大去了(自己的势力就是b敌对的势力) > merge(b,opp[head_a]); //大哥,我来了。。。。。 > > } > } > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator