链接: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 }

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

[题解]UVA10054 The Necklace的更多相关文章

  1. UVA10054 The Necklace

    UVA10054 The Necklace 链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18806 [思路] 欧拉回路 ...

  2. UVA-10054.The Necklace(欧拉回路)解题报告

    2019-02-09-21:55:23 原题链接 题目描述: 给定一串珠子的颜色对,每颗珠子的两端分别有颜色(用1 - 50 之间的数字表示,对每颗珠子的颜色无特殊要求),若两颗珠子的连接处为同种颜色 ...

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

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

  4. [数据生成器]UVA10054 The Necklace

    应吴老师之邀,写了个数据生成器. 目前这个数据生成器可以保证生成的数据都是合法的,且效率也还不错.只是在建立普通连通图的时候zyy偷懒了,直接把所有点串起来从而保证图的连通.如果有大神有更好的方法请不 ...

  5. 题解【UVA10054】The Necklace

    题目描述 输入格式 输出格式 题意简述 有一种由彩色珠子连接而成的项链.每个珠子的两半由不同颜色组成.如图所示,相邻两个珠子在接触的地方颜色相同.现在有一些零碎的珠子,需要确认它们是否可以复原成完整的 ...

  6. 题解 P1203 【[USACO1.1]坏掉的项链Broken Necklace】

    [USACO1.1]坏掉的项链Broken Necklace 22892 破碎的项链 方法一:很容易想到枚举断点,再分别两头找,但是要注意很多细节 #include<iostream> # ...

  7. 【dog与lxy】8.25题解-necklace

    necklace 题目描述 可怜的dog最终还是难逃厄运,被迫于lxy签下城下之约.这时候lxy开始刁难dog. Lxy首先向dog炫耀起了自己的财富,他拿出了一段很长的项链.这个项链由n个珠子按顺序 ...

  8. 「日常训练」The Necklace(UVA-10054)

    代码 for(int i=0; i!=n; ++i) { int u = cin.nextInt(); int v = cin.nextInt(); edges.add(new Edge(u,v)); ...

  9. 2016 Multi-University Training Contest 1 H.Shell Necklace

    Shell Necklace Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

随机推荐

  1. 带你玩转Flink流批一体分布式实时处理引擎

    摘要:Apache Flink是为分布式.高性能的流处理应用程序打造的开源流处理框架. 本文分享自华为云社区<[云驻共创]手把手教你玩转Flink流批一体分布式实时处理引擎>,作者: 萌兔 ...

  2. winform GDI+ 抗锯齿

    graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

  3. php中关于数据库的操作

    php中对数据库的操作,举例如下: //连接到本地mysql数据库 $myconn=mysql_connect("localhost","root"," ...

  4. HMS Core 6.3.0 版本发布公告

    新增内容风控检测,若用户输入内容不符合国家法律法规要求,风控将会拦截,无法翻译手语动作. 查看详情>> 新增受众同步至HUAWEI Ads功能,实现精准投放高价值用户,提升广告效率: 新增 ...

  5. python10day

    昨日回顾 函数是以功能为导向,减少重复代码.增强可读性. 函数的调用:func().写几次执行几次 函数的返回值return 终止函数 return单个值 return多个值,按元组返回 函数的参数: ...

  6. 学习Java第9天

    今天所作的工作: 反射,枚举类型与泛型 明天工作: 1.线程 2.网络通信 所遇到的问题及解决方法: 反射基本思想,泛型类似于类模板. 理解反射太难了,转悠了好半天,关键是理解反射的思想,才容易学.

  7. 分页方法需要参数(当前页数,总数据量,拿到query的值)

    class Pagination: def __init__(self, page_num, all_count ,params=None,per_num=10,max_show=11): " ...

  8. 使用VScode编写Markdown的一些使用技巧

  9. nginx103

    user  nobody;worker_processes  1;error_log  /home/logs/error.log  info;#pid        logs/nginx.pid;ev ...

  10. UDP数据包最大传输长度

    概念以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元). 但这并不是指链路层的长度被限制在1500字 ...