题意:给定n个点,然后构造一个n个点的无向图,每个点的度数为3;
思路:由图论握手定理可知,每条边都会连接2个点,那么点数应为偶数个,奇数不可能,每个点为3度,那么有n*3/2条边,然后依次连接相邻的就可以了。
code:
#include <bits/stdc++.h>
using namespace std;int main()
{int n;while (~scanf("%d",&n),n){if (n%2||n==2) {puts("Impossible");continue;}printf("%d\n",n+n/2);for (int i=1;i<n;i++)printf("%d %d\n",i,i+1);printf("%d %d\n",1,n);for (int i=1;i<=n/2;i++)printf("%d %d\n",i,i+n/2);}
}