题意:http://mp.weixin.qq.com/s/ZKQI6_9XpsPrycHwzTu5Sw
题解:http://mp.weixin.qq.com/s/nHw70ZSuh_FvWNRgOhH6Xw
补充:构图可以参考Havel定理,暴力简单~
#include<bits/stdc++.h>
using namespace std;
int main() {
int k, deg[101];
cin >> k;
if (k % 2 == 0) {
puts("NO");
} else if (k == 1) {
puts("YES\n2 1\n1 2");
} else {
int n = (k + 2) * 2;
int m = n * k / 2;
printf("YES\n%d %d\n", n, m);
int u0 = 1, u1 = n / 2;
int cnt = (m - 1) / 2;
int u, v, i = 1;
fill(deg + 1, deg + 1 + n / 2, k);
deg[n / 2]--;
bool flag = true;
while (i <= cnt) {
if (flag) {
u = u0++;
v = u0;
while (deg[u]--) {
printf("%d %d\n", u, v);
printf("%d %d\n", u + n / 2, v + n / 2);
deg[v++]--;
i++;
}
} else {
u = u1--;
v = u1;
while (deg[u]--) {
printf("%d %d\n", u, v);
printf("%d %d\n", u + n / 2, v + n / 2);
deg[v--]--;
i++;
}
}
flag = !flag;
}
printf("%d %d\n", n / 2, n);
}
return 0;
}