• UVa 10054 项链(欧拉回路)


    https://vjudge.net/problem/UVA-10054

    题意:
    有一种由彩色珠子连接成的项链。每个珠子的两半由不同颜色组成。相邻两个珠子在接触的地方颜色相同。现在有一些零碎的珠子,需要确认它们是否可以复原成完整的项链。

    思路:

    每种颜色看成一个结点,每个珠子的两半连一条有向边,这样就是欧拉回路的问题了。

    最重要的一点,欧拉回路的输出一定逆序输出。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<string>
     4 #include<cstring>
     5 #include<queue>
     6 #include<vector>
     7 using namespace std;
     8 
     9 const int maxn = 1000 + 5;
    10 
    11 int g[maxn][maxn];
    12 int degree[maxn];
    13 int n;
    14 int MAX;
    15 
    16 void print(int u)
    17 {
    18     for (int i = 1; i <= MAX; i++)
    19     {
    20         if (g[u][i])
    21         {
    22             g[u][i]--;
    23             g[i][u]--;
    24             print(i);
    25             printf("%d %d
    ", i, u);
    26         }
    27     }
    28 }
    29 
    30 int main()
    31 {
    32     //freopen("D:\txt.txt", "r", stdin);
    33     int T;
    34     int kase = 0;
    35     scanf("%d", &T);
    36     int x, y;
    37     while (T--)
    38     {
    39         memset(g, 0, sizeof(g));
    40         memset(degree, 0, sizeof(degree));
    41         MAX = 0;
    42         scanf("%d", &n);
    43 
    44         for (int i = 0; i < n; i++)
    45         {
    46             scanf("%d%d", &x, &y);
    47             degree[x]++;
    48             degree[y]++;
    49             g[x][y]++;
    50             g[y][x]++;
    51             MAX = max(MAX, max(x, y));
    52         }
    53 
    54         printf("Case #%d
    ", ++kase);
    55         bool flag = true;
    56         for (int i = 1; i <= MAX; i++)
    57         {
    58             if (degree[i] % 2 == 1)
    59             {
    60                 printf("some beads may be lost
    ");
    61                 flag = false;
    62                 break;
    63             }
    64         }
    65         if (flag)
    66         {
    67             for (int i = 1; i <= MAX; i++)
    68                 print(i);
    69         }
    70         printf("
    ");
    71     }
    72     return 0;
    73 }
  • 相关阅读:
    【ThreadX】Azure RTOS ThreadX概述
    -- spi flash 擦除接口调用HAL库不同函数的区别
    STM32 芯片锁死解决方法
    【KEIL】User's Guide
    【KEIL】Software Packs
    【KEIL 】Options for File
    使用CubeMX创建TouchGFX工程时LCD死活不显示
    【转】获取本地图片的URL
    printf 函数格式控制
    【集成】touchgfx 之 《Using C code with TouchGFX》
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6597231.html
Copyright © 2020-2023  润新知