链接:http://vjudge.net/problem/viewProblem.action?id=18806

描述:给出一堆珠子,每个珠子有两种颜色,有一端颜色相同的珠子可以串在一起,问是否可以把所有珠子串在一起,并求其中一种方案。

思路:欧拉回路

以颜色作为节点,以珠子作为边建图,无向图。

下面是我的实现:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 #define MaxC 55
 6 int Edge[MaxC][MaxC],Du[MaxC];
 7 int M,Cnt;
 8 bool vis[MaxC][MaxC];
 9 inline void Addedge(int u,int v)
10 {
11     Edge[u][v]++;Edge[v][u]++;
12 }
13 void Solve(int u)
14 {
15     int v;
16     for(v=1;v<=M;)
17     {
18         if(Edge[u][v])
19         {
20            // vis[u][v]=vis[v][u]=1;
21             Edge[u][v]--;Edge[v][u]--;
22             Solve(v);
23             printf("%d %d",v,u);
24             if(u!=M)
25                 printf("\n");
26             if(u==M)
27             {
28                 Cnt--;
29                 if(Cnt)
30                     printf("\n");
31             }
32         }
33         else v++;
34     }
35 }
36 int main()
37 {
38     int T,N;
39     int i,j,u,v;
40     scanf("%d",&T);
41     for(i=1;i<=T;i++)
42     {
43         if(i>1) printf("\n");
44         printf("Case #%d\n",i);
45         scanf("%d",&N);
46         memset(Du,0,sizeof(Du));
47         memset(Edge,0,sizeof(Edge));
48         memset(vis,0,sizeof(vis));
49         M=0;
50         for(j=1;j<=N;j++)
51         {
52             scanf("%d%d",&u,&v);
53             Addedge(u,v);
54             Du[u]++;Du[v]++;
55             if(M<u) M=u;
56             if(M<v) M=v;
57         }
58         for(j=1;j<=M;j++)
59             if(Du[j]%2)
60                 break;
61         if(j<=M)
62         {
63             printf("some beads may be lost\n");
64             continue;
65         }
66         Cnt=Du[M];
67         Solve(M);
68     }
69     return 0;
70 }

View Code

给一个我写的数据生成器:http://www.cnblogs.com/CQBZOIer-zyy/p/3818078.html

转载于:https://www.cnblogs.com/CQBZOIer-zyy/p/3818069.html

[题解]UVA10054 The Necklace相关推荐

  1. UVa10054 The Necklace 欧拉回路

    如果图G中的一个路径包括每个边恰好一次,则路径称为欧拉路径. 如果一个回路是欧拉路径,则称为欧拉回路.(即起点终点相同的欧拉路) 有欧拉回路的称为欧拉图,有欧拉路径但无欧拉回路的称为半欧拉图. 无向图 ...

  2. UVA-10054 The Necklace (欧拉回路)

    题目大意:有n个珠子,珠子两边的颜色已知,问能否连成一条项链.(两个珠子可以项链当且仅当一个珠子的一边颜色与另一个珠子的另一边颜色相同). 题目分析:欧拉回路.将颜色视作节点,珠子当做边,问题变成了找 ...

  3. The Necklace(UVA10054)

    题目:The Necklace 思路:一个图只要满足,每个点的度为偶数,并且是连通图.就必定是欧拉图. 这题的图默认是连通图,所以只要满足每个点的度为偶数,然后再用深搜将它们输出就可以了 #inclu ...

  4. USACO Broken Necklace 题解(环展开成链,枚举)

    题目大意:有一个项链,由红.蓝.白三种颜色的珠子组成,然后现在选择项链中的某一处断开,然后沿断开处的两个珠子分别查找,直至找到一个颜色不同的珠子,并统计个数(其中颜色以第一个非白色的为准,白色的珠子可 ...

  5. AOAPC I: Beginning Algorithm Contests 题解

    AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...

  6. Codeforces Round #650 (Div. 3)(A-F1)题解

    A. Short Substrings 题解:按题意模拟即可 /*Keep on going Never give up*/ #pragma GCC optimize(3,"Ofast&qu ...

  7. 坏掉的项链(洛谷P1203题题解,C++语言描述)

    题目要求 题目链接 分析 链子是循环的,随便选一点断开不合适,所以把它作为一个线性的字符串其实不好. 处理方法是将字符串扩增一倍,即necklace += necklace; 这样的话,我们从初始出发 ...

  8. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》

    罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...

  9. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

最新文章

  1. python模块收集
  2. CCSP-防火墙学习笔记第6章
  3. Animation动画:
  4. css面试基础知识,CSS知识点与面试题解析
  5. SpringMVC REST 风格静态资源访问配置
  6. 西安交大计算机考研分数线2020院线,西安交通大学2020研究生复试分数线预计4月中旬左右公布...
  7. Uniswap 24h交易量约为10.6亿美元涨2.91%
  8. string字符串转实体类_【Recursion】(6)实战练习:使用递归处理字符串
  9. Codeforces Round #419 Div. 1
  10. 软件安装及软件包管理
  11. 计算机指令与运算基础原理笔记
  12. 磁共振成像(Magnetic Resonance Imaging,MRI)学习资料汇总,包括:在线学习视频、网站、教材
  13. 利用IE登陆windows 2003 的终端服务器
  14. python绘制相频特性曲线_详解基于python的图像Gabor变换及特征提取
  15. 产品经理学项目管理04:企业管理金字塔
  16. springboot启动报错The Bean Validation API is on the classpath but no implementation could be found
  17. 微博html5版打不开,电脑新浪微博页面打不开怎么办|电脑微博无法打开的解决方法...
  18. gcc -m32报错的解决办法
  19. 删除服务残留注册表_强制卸载软件程序、清理注册表的好工具
  20. MySQL数据库被黑了

热门文章

  1. 嵌入式Web服务器移植
  2. 如何复制一个目录里面的所有目录和文件
  3. C语言编程技巧-signal(信号机制)
  4. 数据竞争(data race)问题分析的利器——valgrind的Helgrind
  5. Docker容器中数据两种持久化存储方式:卷和挂载宿主目录
  6. vc6静态库的生成和调用
  7. 【Qt】Qt再学习(五):HTTP Example(HTTP下载文件的示例)
  8. 【FFmpeg】解决警告warning: xxx is deprecated [-Wdeprecated-declarations]的方法
  9. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...
  10. java 读出数字声音_【求助】已经计算出的数字结果,想用声音播放出来。怎么弄!!!...