提交时间:2023-10-28 13:21:24

运行 ID: 107844

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