UOJ #460. 新年的拯救计划 神仙题+构造
对于这个神仙题,我还能说什么~
第一个答案=$n/2$ 还是比较好猜的.
对于构造这个树,大概就是先从 $1$ 号节点向 $n/2$ 距离以内都连一条边,再在第 $n/2$ 个节点进行这个操作,然后从 $2$ 开始.....
你会发现不合法的情况就是有重边,然而这个是循环的,第 $n/2+1$ 次才会重,所以是可行的.
#include <cstdio> #include <algorithm> #define setIO(s) freopen(s".in","r",stdin) using namespace std; int main() { // setIO("input"); int n,i,j,m; scanf("%d",&n); printf("%d\n",m=(n>>1)); for(i=1;i<=m;++i) { for(j=1;j<=m;++j) printf("%d %d ",i,i+j); for(j=1;j<n-m;++j) printf("%d %d ",i+m,(i+m+j-1)%n+1); printf("\n"); } return 0; }