为什么这么写不对
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+100;
int T,F,U=0;
int n,m,s[N],fa[N],flag[N];
int f(int x){return x<=n?x+n:x-n;}
int find(int x){
int res;
if(x==T or x==F) res=x;
else if(flag[-x+n] or x==U) res=U;
else if(flag[x+n]) res=T;
else{
flag[x+n]=1;
if(fa[x]==x) res=x;
else res=fa[x]=find(fa[x]);
flag[x+n]=0;
}
return res;
}
void work(){
int ans=0;
for(int i=1;i<=n;i++) if(find(i)==U) ans++;
cout<<ans<<endl;
}
void init(){
cin>>n>>m;T=n+1,F=-n-1;
for(int i=1;i<=2*n;i++) fa[i]=i;
for(int k=1;k<=m;k++){
char opt; cin>>opt;
int i,j;
if(opt=='T'){
cin>>i;
fa[i]=T,fa[i+n]=F;
}
else if(opt=='F'){
cin>>i;
fa[i]=F,fa[i+n]=T;
}
else if(opt=='U'){
cin>>i;
fa[i]=U,fa[i+n]=U;
}
else if(opt=='+'){
cin>>i>>j;
fa[i]=fa[j];
fa[i+n]=fa[j+n];
}
else{
cin>>i>>j;
fa[i]=f(fa[j]);
fa[i+n]=f(fa[j+n]);
}
}
}
int main(){
int c,t;
cin>>c>>t;
while(t--){
init();
work();
}
}