站外题求调(P1955弱化版)
  • 板块题目总版
  • 楼主LiaoYF1
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/29 09:43
  • 上次更新2023/10/27 17:55:20
查看原帖
站外题求调(P1955弱化版)
633466
LiaoYF1楼主2022/7/29 09:43

题面和P1955一模一样,但是范围是t20t \leq 20n100n \leq 1001xi,xj1001 \leq x_i,x_j \leq 100,正解就是搜索或者Floyd,有人帮我看看嘛,在别的OJ过4个WA1个record

#include<iostream>
#include<cstring>
using namespace std;
int eq[105][105],neq[105][105];
int main(){
	int t,n,flag;
	cin>>t;
	while(t--){
		cin>>n;
		flag=0;
		memset(eq,0,sizeof(eq));
		memset(neq,0,sizeof(eq));
		for(int i=0;i<n;i++){
			int xi,xj,xe;
			cin>>xi>>xj>>xe;
			if(xe){
			  eq[xi][xj]=1;
			  eq[xj][xi]=1;
			}else{
			  neq[xj][xi]=1;
			  neq[xi][xj]=1;
			}
		}
		for(int k=1;k<=100;k++){
			for(int i=1;i<=100;i++){
				for(int j=1;j<=100;j++){
				  if(eq[i][k]&&eq[k][j])eq[i][j]=eq[i][k]&&eq[k][j];
				}
			}
		}
		for(int i=1;i<=100;i++){
		  if(flag)break;
		  for(int j=1;j<=100;j++){
  		  if(eq[i][j]&&neq[i][j]){
  		    flag=1;
  		    cout<<"NO\n";
  		    break;
  		  }
		  }
		}
		if(!flag)cout<<"YES\n";
	}
	return 0;
}
2022/7/29 09:43
加载中...