求cym调代码
  • 板块题目总版
  • 楼主LittleY
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/21 12:26
  • 上次更新2023/11/21 16:55:10
查看原帖
求cym调代码
1043917
LittleY楼主2023/11/21 12:26
#include<bits/stdc++.h>
using namespace std;
const int T=2e5+55;
const int F=2e5+54;
const int U=2e5+53;
const int N=1e5+9;
int fa[2*N+500];
int vis[2*N+500];
int c,t;
int find(int xx){
	if(xx==-F||fa[xx]==-F){
		return -F;
	}
	else if(xx==-U||fa[xx]==-U){
		return -U;
	}
	else if(xx==-T||fa[xx]==-T){
		return -T;
	}
	else if(xx!=fa[xx]){
		fa[xx]=find(fa[xx]);
	}
	return fa[xx];
}
int main(){
	freopen("tribool4.in","r",stdin);
	freopen("tribool4.out","w",stdout);
	cin>>c>>t;
	while(t--){
		int n,m;
		cin>>n>>m;
		memset(fa,0,sizeof(fa));
		memset(vis,0,sizeof(vis));
		fa[T]=T;
		fa[F]=F;
		fa[U]=U;
		int ling=n+1;
		for(int i=1;i<=ling+n;i++){
			fa[i]=i;
		}
		for(int i=1;i<=m;i++){
			char ch;
			cin>>ch;
			if(ch=='T'||ch=='U'||ch=='F'){
				int a;
				cin>>a;
				if(ch=='T'){
					fa[a+ling]=T;
					fa[ling-a]=-T;
				}
				else if(ch=='F'){
					fa[a+ling]=F;
					fa[ling-a]=-F;
				}
				else{
					fa[a+ling]=U;
					fa[ling-a]=-U;
				}
			}
			else{
				int a,b;
				cin>>a>>b;
				if(ch=='+'){
					fa[a+ling]=find(b+ling);
					fa[ling-a]=find(ling-b);
				}
				else if(ch=='-'){
					fa[a+ling]=find(ling-b);
					fa[ling-a]=find(ling+b);
				}
			}
		}
		for(int i=1;i<=ling+n;i++){
			int u=find(i);
			cout<<i<<" ";
		}
		cout<<endl;
		for(int i=1;i<=ling+n;i++){
			cout<<fa[i]<<" ";
		}
		cout<<endl;
		int ans=0;
		for(int i=1;i<=n;i++){
			if(fa[ling+i]==fa[ling-i]||fa[ling+i]==ling-i||fa[ling-i]==ling+i||fa[ling+i]==U||fa[ling-i]==U||fa[ling+i]==-U||fa[ling-i]==-U||vis[fa[ling-i]]||vis[fa[ling+i]]||vis[ling+i]||vis[ling-i]){
				vis[fa[ling-i]]=1;
				vis[fa[ling+i]]=1;
				vis[ling-i]=1;
				vis[ling+i]=1;
			}
		}
		for(int i=1;i<=ling+n;i++){
			cout<<vis[i]<<" ";
		}
		cout<<endl;
		cout<<endl;
		for(int i=1;i<=n;i++){
			if(vis[ling+i]||vis[ling-i]||vis[fa[ling+i]]||vis[fa[ling-i]]||fa[ling+i]==U||fa[ling-i]==U||fa[ling+i]==-U||fa[ling-i]==-U||ling+i==ling-i){
				ans++;
				cout<<ling+i<<" ";
			}
		}
		cout<<endl<<endl;
		cout<<n<<" "<<ling<<"   ";
		cout<<ans<<endl<<endl;
	}
	
	return 0;
}
/*


*/
2023/11/21 12:26
加载中...