zoukankan      html  css  js  c++  java
  • 题解 UVA11387 The 3-Regular Graph(推理 + 建图)

    题意

    (n)个点,要求构造一张简单无向图,其中每个点入度都为(3),若可以构造则输出边数与边(顺序随意),无法构造则输出(Impossible)

    算法

    推理(qwq)

    思路

    首先,整张图的度数和应为(n imes3),而每连一条边度数和增加(2),故(n)为奇数肯定不合法。另外,图的最大边数应大于等于(n imes3),故(2)也是不合法的。
    接着考虑构造:先连成首尾相连的环,这样每个点度数都为(2),然后连对角线即可(对角线连法见代码)。

    代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main(){
        int n, vis[110];
        while(scanf("%d", &n) != EOF && n){
            if(n < 3 || (n & 1)){ printf("Impossible
    "); continue;}
            memset(vis,0,sizeof(vis));
            printf("%d
    ", n * 3 / 2);
            for(int i = 1; i < n; ++ i){
                printf("%d %d
    ", i, i + 1);
                if(!vis[i]){
                    vis[i] = vis[i + (n / 2)] = 1;
                    printf("%d %d
    ", i, i + (n / 2));   //连对角线
                }
            }
            printf("%d %d
    ", n, 1);
        }
        return 0;
    }
    
  • 相关阅读:
    实验
    概率与期望
    2020CSP-S模板
    洛谷:P2538 [SCOI2008]城堡
    洛谷P1731 生日蛋糕
    洛谷 P1180 石子合并
    洛谷 P2831 愤怒的小鸟
    浅谈状压DP
    浅谈线段树
    LCA-树链剖分
  • 原文地址:https://www.cnblogs.com/whenc/p/13793678.html
Copyright © 2011-2022 走看看