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