直接解释输入了:
第一行cases. 然后是n和m代表有n个人,m个操作 给你两个空的集合 每个操作后面跟着俩数 D操作是说这俩数不在一个集合里。 A操作问这俩数什么关系 不能确定:输出Not sure yet. 在一个集合里:输出In the same gang. 不在一个集合里:输出In different gangs. 这题挺像同性恋的虫子那道题的。// by SiriusRen#include#include using namespace std;int cases,xx,yy,n,m,f[105000],d[100500];char jy,jy1;int find(int x){ if(f[x]==x)return x; int y=f[x]; f[x]=find(f[x]); d[x]=(d[x]+d[y])%2; return f[x];}int main(){ scanf("%d",&cases); while(cases--){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)f[i]=i; memset(d,0,sizeof(d)); for(int i=1;i<=m;i++){ scanf("%c%c%d%d",&jy1,&jy,&xx,&yy); int fx=find(xx),fy=find(yy); if(jy=='A'){ if(fx!=fy)puts("Not sure yet."); else if(d[xx]!=d[yy])puts("In different gangs."); else puts("In the same gang."); } else f[fx]=fy,d[fx]=(d[yy]-d[xx]+1)%2; } }}