昨天 abc G题求调
  • 板块学术版
  • 楼主Cute__yhb
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/11 16:20
  • 上次更新2024/8/11 17:18:20
查看原帖
昨天 abc G题求调
813724
Cute__yhb楼主2024/8/11 16:20

RT。WA 了 3 个点。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define INF 0x3f3f3f3f
#define endl '\n'
#define fi first
#define se second
#define pii pair<int,int>
#define p_q priority_queue
#define iter iterator
#define pb push_back
#define eps 1e-8
#define oper operator
#define mk make_pair
#define ls x<<1
#define rs x<<1|1
#define int ll
int n,m,a[105][105],cnt[105],ans[105];
vector<int>g[105];
signed main(){
   cin>>n>>m;
   for(int i=1;i<=m;i++){
   	int x,y;
   	cin>>x>>y;
   	a[x][y]=1;
   	a[y][x]=1;
   }
   for(int i=1;i<=n;i++){
   	int t=i;
   	for(int j=i+1;j<=n;j++){
   		if(a[j][i]>a[t][i]){
   			t=j;
   		}
   	}
   	swap(a[t],a[i]);
   	for(int j=i+1;j<=n;j++){
   		if(a[j][i]){
   			for(int k=i;k<=n+1;k++){
   				a[j][k]^=a[i][k];
   			}
   		}
   	}
   }
   int k=1;
   ans[n]=a[n][n+1];
   if(a[n][n]==0){
   	ans[n]=1;
   	if(a[n][n+1]!=0){
   		cout<<"No";
   		return 0;
   	}
   }
   for(int i=n-1;i>=1;i--){
   	for(int j=i+1;j<=n;j++){
   		if(a[i][j])a[i][n+1]^=ans[j];
   	}
   	ans[i]=a[i][n+1];
   	if(a[i][i]==0){
   		if(ans[i]>0){
   			cout<<"No";
   			return 0;
   		}
   		ans[i]=1+k;
   		k++;
   	}
   }
   bool f=0;
   for(int i=1;i<=n;i++){
   	if(ans[i]==0){
   		f=1;
   		break;
   	}
   }
   if(f){
   	puts("No");
   	return 0;
   }else puts("Yes");
   for(int i=1;i<=n;i++) cout<<ans[i]<<' ';
   return 0;
}
2024/8/11 16:20
加载中...