CF741C Arpa’s overnight party and Mehrdad’s silent entering
https://www.luogu.com.cn/problem/CF741C
怎么在ZR做过两次的题还是没想出来,逊捏
考虑对于 i = 1... n i=1...n i=1...n连边 2 i − > 2 i + 1 2i->2i+1 2i−>2i+1,再把情侣连起来,这样连出来一定不存在奇环,即一定是个二分图,那么久可以黑白染色了
#include<bits/stdc++.h>
#define N 400050
using namespace std;
struct E {
int u, v;
} e[N];
int col[N], n;
vector<int> g[N];
void insert(int u, int v) {
g[u].push_back(v), g[v].push_back(u);
}
void dfs(int u, int o) {
col[u] = o;
for(int v : g[u]) {
if(!col[v]) dfs(v, 3 - o);
}
}
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i ++) {
int u, v;
scanf("%d%d", &u, &v);
e[i].u = u, e[i].v = v;
insert(u, v), insert(v, u);
}
for(int i = 1; i <= 2 * n; i += 2) {
insert(i, i + 1);
}
for(int i = 1; i <= 2 * n; i ++) if(!col[i]) dfs(i, 1);
for(int i = 1; i <= n; i ++) {
printf("%d %d\n", col[e[i].u], col[e[i].v]);
}
return 0;
}