提交时间:2024-04-16 17:16:33

运行 ID: 143596

#include<bits/stdc++.h> using namespace std; bool mp[300][300]; int ans[300],n,x,num,tmp1,tmp2,sb_bug; bool number(char c){ return('0'<=c&&c<='9'); } bool check(int k){ for(int i=1;i<=n;i++)if(mp[i][k]&&ans[i]==ans[k]&&k!=i)return false; return true; } void dfs(int k){ if(k>=n){ for(int i=1;i<=n;i++)cout<<ans[i]<<" "; exit(0); } for(int i=1;i<=4;i++){ ans[k+1]=i; if(check(k+1))dfs(k+1); ans[k+1]=0; } } int main(){ string s; cin>>n; getline(cin,s); for(int i=1;i<=n;i++){ getline(cin,s); if(number(s[1])){ tmp1=((s[0]-'0')*10)+(s[1]-'0'); sb_bug=3; } else{ tmp1=s[0]-'0'; sb_bug=2; } tmp2=0; s+=' '; for(int j=sb_bug;j<s.length();j++){ if(number(s[j]))tmp2=tmp2*10+(s[j]-'0'); else{ mp[tmp1][tmp2]=true; mp[tmp2][tmp1]=true; tmp2=0; } } } dfs(0); return 0; }