非常强的构造题。
很显然的是我们要构造一个类似菊花图的东西,因为这样的话两点之间路径的点数会非常少,很容易满足第二个条件。
但是因为直接菊花图的话会不满足第一个条件,,,所以我们可以构造一个类菊花图。
(题解太神了,%一发题解)
#include<cstdio>
#define ll long long
using namespace std;
int main(){
int k; scanf("%d",&k);
printf("%d\n",k<<1);
for(int i=1;i<=k;i++){
printf("%d %d\n",i*2-1,i*2);
for(int j=1;j<i;j++) printf("%d %d\n%d %d\n",i*2-1,j*2-1,i*2,j*2);
for(int j=i+1;j<=k;j++) printf("%d %d\n%d %d\n",i*2-1,j*2,i*2,j*2-1);
}
return 0;
}