提交时间:2023-10-28 10:57:49

运行 ID: 107818

#include<bits/stdc++.h> using namespace std; int n,link[27][27],t,s[27]; bool check(int cur,int color) { for(int i=1;i<=link[cur][0];i++) if(s[link[cur][i]]==color) return false; return true; } bool check2() { for(int cur=1;cur<=n;cur++) for(int i=1;i<=link[cur][0];i++) if(!s[link[cur][i]]) return false; return true; } void dfs(int cur) { for(int i=1;i<=4;i++) if(check(cur,i)) { s[cur]=i; if(link[cur][0]==1) return; for(int k=1;k<=link[cur][0];k++) { if(!s[link[cur][k]]) dfs(link[cur][k]); if(check2()) { for(int j=1;j<=n;j++) cout<<s[j]<<' '; exit(0); } } } } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>t; for(int i=1;getchar()!='\n';i++) { cin>>link[t][i]; link[t][0]++; } } dfs(1); }