vjudge上Findthem,Catchthem这题MLE了,代码如下,求改,谢谢!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int st[10001];
int find_st(int p)
{
if(st[p]<0)
{
return p;
}
return st[p]=find_st(st[p]);
}
void join_st(int p,int q)
{
int pp=find_st(p);
int qq=find_st(q);
if(p!=q)
{
st[pp]=qq;
}
}
int main()
{
int t;
char c;
scanf("%d",&t);getchar();
while(t--)
{
int n,m,t1,t2;
memset(st,-1,sizeof(st));
scanf("%d %d",&n,&m);getchar();
while(m--)
{
scanf("%s%d%d",&c,&t1,&t2);getchar();
if(c=='A')
{
if(find_st(t1)==find_st(t2)) printf("In the same gang.\n");
else if(find_st(t1)==find_st(t2+n)) printf("In different gangs.\n");
else printf("Not sure yet.\n");
}
else if(c=='D')
{
join_st(t1,t2+n);
join_st(t2,t1+n);
}
}
}
return 0;
}