題目鏈接:uva 11387 - The 3-Regular Graph
題目大意:給出n,表示說有n個點,問說是否可以組成一個所有節點的度數均為3的無向圖。
解題思路:首先判斷說是否可能組成,一條邊會導致兩個點的度數加1,總度數加2。所以圖的總度數一定是偶數,若n為奇數,n*3一定也為奇數,一定不可以。所以偶數的情況就一定是可行的(除了小於等於2),構造方法:節點前後相連,在等距離的與未連接的點建立一條邊。
#include#include int main() { int n; while (scanf("%d", &n) == 1 && n) { if (n % 2 || n <= 2) printf("Impossible\n"); else { int tmp = n / 2; printf("%d\n", tmp * 3); for (int i = 1; i <= n; i++) printf("%d %d\n", i, i % n + 1); for (int i = 1; i <= tmp; i++) printf("%d %d\n", i, i + tmp); } } return 0; }