提交时间:2025-11-19 19:30:19

运行 ID: 38930

#include<bits/stdc++.h> #define int long long void read(int &x){ x=0; bool neg=0; char c=getchar(); for(;!isdigit(c);c=getchar())neg=(c=='-'); for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48); if(neg)x=-x; } #define read2(a,b) read(a),read(b) using namespace std; set<int>e[300005]; int n,m,ans[300005]; void prt(){ for(int i=1;i<=n;i++)printf("%lld ",ans[i]); } bool chk(int x,int y){ int cnt=(e[x].count(y)); for(int z:e[x])cnt+=e[y].count(z); return cnt<2; } void slv(){ read2(n,m); for(int i=1,u,v;i<=m;i++){ read2(u,v); e[u].insert(v); e[v].insert(u); } for(int i=1;i<=n;i++)ans[i]=1; for(int i=1;i<=n;i++){ if(e[i].size()==0){ ans[i]=2; ans[i==1?2:1]=3; prt(); return; } if(e[i].size()==1){ ans[i]=2; ans[*e[i].begin()]=3; prt(); return; } } for(int i=1;i<=n;i++){ if(e[i].size()==2){ for(int j=1;j<=n;j++){ if(i==j)continue; if(chk(i,j)){ ans[i]=2; ans[j]=3; prt(); return; } } } } for(int i=1;i<=n;i++){ if(e[i].size()==3){ for(int j=1;j<=n;j++){ if(i==j)continue; if(chk(i,j)){ ans[i]=2; ans[j]=3; prt(); return; } } } } } signed main(){ slv(); }