Airlines — 2
程序员文章站
2024-03-17 10:10:16
...
Gym - 100113B
题意要时n个点之间的所有连边染色,使得不存在相同颜色的边组成一个奇环。
分治,对于一个n个点的,我们可以把它分为 (1, mid) (mid+1, n) 两部分,和二分图一样,并且两边相互连相同颜色的边,这样这种颜色的边肯定不存在奇环,然后对于两边再分别这样递归下去,最后答案是logn的。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 510;
int a[maxn][maxn], n, m, t;
void dfs(int l, int r, int c) {
if (l == r) return;
t = max(t, c);
int mid = (l+r)/2;
for (int i = l; i <= mid; i++)
for (int j = mid+1; j <= r; j++) {
a[i][j] = a[j][i] = c;
}
dfs(l, mid, c+1);
dfs(mid+1, r, c+1);
}
int main() {
freopen("avia2.in","r",stdin);
freopen("avia2.out","w",stdout);
scanf("%d", &n);
t = 0;
dfs(1, n, 1);
printf("%d\n", t);
for (int i = 1; i < n; i++) {
for (int j = i+1; j < n; j++) printf("%d ", a[i][j]);
printf("%d\n", a[i][n]);
}
}
上一篇: 最短路and差分约束 【例题详解】
下一篇: T1342 最短路径问题
推荐阅读
-
Airlines — 2
-
用python写2进制转10进制小程序
-
【C++】如何理解函数重载【2】--函数重载示例
-
Day12_2:继承和方法重写
-
SpringMVC + summernote 重写回调函数onImageUpload方法(2)
-
2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀
-
Python 进制转换,十进制与2进制、8进制、16进制之间的转换
-
MySQL8解决In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated...
-
2进制,8进制,10进制,16进制在python中的表示方法和互相转换函数
-
10进制->2进制 10进制->16进制(Java解决)