题解:P9384 [THUPC 2023 决赛] 着色
思路分析
题目要求将完全图
二分图没有奇环,所以如果每种颜色的边集都是二分图,则条件自动满足。
于是问题转化为:能否将
我们可以用二进制编码的方法构造:
给每个顶点分配一个
第
对于边
这样,每种颜色的边都只连接两部之间,因此该颜色的子图是二分图,不含奇环。
因为
本题只需按上述方法构造,并输出任意一种合法染色即可。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int n,id[1005];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) id[i] = i - 1;
for (int i = 1; i < n; i++) {
for (int j = 1; j <= n - i; j++) {
int u = i;
int v = i + j;
int diff = id[u] ^ id[v];
int c = 0;
while (!(diff & (1 << c))) c++;
cout << c;
}
cout << endl;
}
return 0;
}