Codeforces 1144F(二分染色)
发现奇环不可行,偶环可行,考虑二分图。然后染色,方向全都从一种指向另一种就可以了,随意。
1 const int maxn = 2e5 + 5; 2 int n, m, color[maxn]; 3 vector<int> vc[maxn]; 4 vector<P> e; 5 6 void dfs(int cur, int co) { 7 color[cur] = co; 8 for (auto i : vc[cur]) { 9 if (!color[i]) { 10 dfs(i, 3 - co); 11 } else if (color[i] == color[cur]) { 12 puts("NO"); 13 exit(0); 14 } 15 } 16 } 17 18 int main() { 19 read(n), read(m); 20 rep(i, 1, m) { 21 int u, v; 22 read(u), read(v); 23 vc[u].push_back(v); 24 vc[v].push_back(u); 25 e.push_back({u, v}); 26 } 27 28 dfs(1, 1); 29 puts("YES"); 30 for (auto i : e) { 31 write(color[i.first] < color[i.second]); 32 } 33 return 0; 34 }