zoukankan      html  css  js  c++  java
  • UVA10054 The Necklace(欧拉回路)

    题目链接

    题意:

    每个珠子两半有两种不同的颜色组成,相邻两珠子在接触的地方颜色相同,确认一些零碎的珠子,能否还原成完整的项链。

    分析:

    把每种颜色看成一个结点,珠子的两半连一条有向边,则题目转化为了欧拉回路问题。

    注意:

    注意编号问题,因为颜色1~50,所以最多有50个结点。

     对欧拉回路输出有疑问的可参考本随笔

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <queue>
    #include <stack>
    
    using namespace std;
    
    const int maxn = 50+20;
    const int n = 50;
    
    int deg[maxn], G[maxn][maxn], m;
    
    void euler(int u){
        for(int v=1; v<=n; v++){    //这里是n而非m
            if(G[u][v]){
                G[u][v]--;
                G[v][u]--;
                euler(v);
                printf("%d %d\n", v, u);
            }
        }
    }
    
    int main(){
        int T, u, v, kase=0;
        cin >> T;
        while(T--){
            cin >> m;
    
            memset(deg, 0, sizeof(deg));
            memset(G, 0, sizeof(G));
    
            for(int i=0; i<m; i++){
                cin >> u >> v;
                G[u][v]++;
                G[v][u]++;
                deg[u]++;
                deg[v]++;
            }
    
            bool flag = true;
    
            for(int i=1; i<=n; i++){    //这里也是n非m
                 if(deg[i] % 2 == 1) { flag = false; break; }
            }
    
            if(kase) putchar('\n');
    
            if(flag){
                printf("Case #%d\n", ++kase);
                euler(u);
            }
            else printf("Case #%d\nsome beads may be lost\n", ++kase);
        }
    
        return 0;
    }
  • 相关阅读:
    01 变量、基本数据类型
    02 gitlab的基本使用
    kubernetes
    02 redis高可用集群
    Redis & ELK
    01 Redis安装、配置详解、数据备份与恢复
    Jenkins
    01 git gitlab jenkins的安装
    golang mysql 客户端
    接口类
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3097590.html
Copyright © 2011-2022 走看看