题意:给定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);
}
}
本文探讨了如何构造一个所有节点度数均为3的无向图,并通过具体实例介绍了实现这一构造的方法。文章首先解释了图论中的握手定理,并基于此原理给出了算法实现的代码。
13万+

被折叠的 条评论
为什么被折叠?



