Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
100235 | 梁晨熙 | 四色地图 | C++ | 通过 | 100 | 0 MS | 264 KB | 993 | 2023-08-25 09:52:37 |
#include <bits/stdc++.h> #define endl '\n' using namespace std; bool mp[300][300]; int ans[300]; bool number(char c){ return ('0'<=c&&c<='9'); } int n,x,num; bool check(int k){ for(int i=1;i<=n;i++) { if(mp[i][k]&&ans[i]==ans[k]&&k!=i)return 0; } return 1; } void dfs(int k){ if(k>=n){ for(int i=1;i<=n;i++){ cout<<ans[i]<<" "; } cout << endl; exit(0); } for(int i=1;i<=4;i++){ ans[k+1]=i; if(check(k+1)){ dfs(k+1); } ans[k+1]=0; } } signed main(){ string s; int tmp1,tmp2; cin>>n; getline(cin,s); int sb_bug; 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; }