从20分一路改到了10分,求大佬帮忙看看
#include<bits/stdc++.h>
using namespace std;
int c,t,n,m,a[200010],f[200010];
int find(int x){
if(f[x]==x)return x;
else return f[x]=find(f[x]);
}
int main(){
cin>>c>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=n*2;i++)f[i]=i,a[i]=1e9;
while(m--){
char s;
cin>>s;
if(s=='T'){
int x;
cin>>x;
a[x]=1;
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=1;
if(find(i)==find(x+n))a[i]=-1;
}
}
if(s=='F'){
int x;
cin>>x;
a[x]=-1;
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=-1;
if(find(i)==find(x+n))a[i]=1;
}
}
if(s=='U'){
int x;
cin>>x;
a[x]=0;
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=0;
if(find(i)==find(x+n))a[i]=0;
}
}
if(s=='-'){
int x,y;
cin>>x>>y;
if(find(x)==find(y)){
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=0;
if(find(i)==find(x+n))a[i]=0;
}
}else{
a[x]=-a[y];
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=a[x];
if(find(i)==find(y))a[i]=a[y];
}
f[find(x)]=find(y+n);
f[find(x+n)]=find(y);
}
}
if(s=='+'){
int x,y;
cin>>x>>y;
if(find(x)==find(y+n)){
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=0;
if(find(i)==find(y))a[i]=0;
}
}else{
a[x]=a[y];
for(int i=1;i<=n;i++){
if(find(i)==find(x))a[i]=a[x];
}
f[find(x)]=find(y);
f[find(x)]=find(y);
}
}
}
int sum=0;
for(int i=1;i<=n;i++){
if(a[i]==0)sum++;
}
cout<<sum<<endl;
}
return 0;
}