我这个只具有部分正确性的代码,却能拿到相应的部分分。
else if(ID==7||ID==8){
for(cin>>n>>m,i=ans=0;++i<=n;)frm[i]=i,cg[i]=0,typ[i]=0,e[i].clear();
for(i=0;++i<=m;){
cin>>op>>x>>y;
if(op=='+')frm[x]=frm[y],cg[x]=cg[y];
else frm[x]=frm[y],cg[x]=!cg[y];
}
for(i=0;++i<=n;)e[frm[i]].push_back(i);
for(i=0;++i<=n;)if(!typ[i]&&frm[i]==i&&cg[i])dfs2(i);
printf("%d\n",ans);
}