完全就是哭瞎的节奏···QAQ

又是图论···

题意:有一种项链,每个珠子上有两种颜色,相同颜色的两颗珠子的两头相连,如果能连成环输出珠子的顺序,不能连成环输出"some beads may be lost"。

解法:DFS。将颜色看做点,珠子看做边,转化为欧拉回路问题。欧拉回路每个点的入度和出度和都是偶数。对颜色做DFS。加上回溯会T,不加度数判断会WA……

代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<math.h>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#define ll long long
using namespace std;
int color[55][55];//记录不同颜色珠子的个数
int n;
struct node
{
int a,b;
node(int a,int b): a(a),b(b) {}
};//珠子
vector<node> v;//项链的序列
void dfs(int c)
{
for(int i=1; i<55; i++)
{
if(color[c][i])
{
color[c][i]--;
color[i][c]--;
dfs(i);
v.push_back(node(c,i));
}
}
return ;
}
int main()
{
int t;
scanf("%d",&t);
for(int cnt=1; cnt<=t; cnt++)
{
v.clear();
int a,b;
memset(color,0,sizeof(color));
int d[55]= {0};//度数
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d%d",&a,&b);
color[a][b]++;
color[b][a]++;//一个珠子可以表示两种珠子
d[a]++;
d[b]++;
}
int flag=1;
for(int i=0; i<55; i++)
{
if(d[i]&1)
{
flag=0;
break;
}
}//度数判断
printf("Case #%d\n",cnt);
if(flag)
{
dfs(a);
if(!(n==v.size()&&v[0].b==v[v.size()-1].a))//判断首尾是否可以相连
flag=0;
}
if(flag)
for(int i=v.size()-1; i>=0; i--)
printf("%d %d\n",v[i].a,v[i].b);
else
puts("some beads may be lost");
if(cnt<t)
puts("");
}
return 0;
}

UVA 10054 The Necklace的更多相关文章

  1. UVA 10054 The Necklace(欧拉回路,打印路径)

    题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  2. uva 10054 The Necklace(欧拉回路)

    The Necklace  My little sister had a beautiful necklace made of colorful beads. Two successive beads ...

  3. UVa 10054 The Necklace(无向图欧拉回路)

    My little sister had a beautiful necklace made of colorful beads. Two successive beads in the neckla ...

  4. UVA 10054 the necklace 欧拉回路

    有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...

  5. uva 10054 The Necklace 拼项链 欧拉回路基础应用

    昨天做了道水题,今天这题是比较水的应用. 给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链. 是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找 ...

  6. UVa 10054 The Necklace【欧拉回路】

    题意:给出n个珠子,珠子颜色分为两半,分别用1到50之间的数字表示, 现在给出n个珠子分别的颜色,问是否能够串成一个环.即为首尾相连,成为一个回路 判断是否构成一个环,即判断是否为欧拉回路,只需要判断 ...

  7. UVa 10054 The Necklace BFS+建模欧拉回路

    算法指南 主要就是建立欧拉回路 #include <stdio.h> #include <string.h> #include <iostream> #includ ...

  8. 【欧拉回路】UVA - 10054 The Necklace

    题目大意: 一个环被切割成了n个小块,每个小块有头尾两个关键字,表示颜色. 目标是判断给出的n个小块能否重构成环,能则输出一种可行解(按重构次序输出n个色块的头尾颜色).反之输出“some beads ...

  9. UVA 10054 The Necklace (无向图的欧拉回路)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5405904.html 题意: 妹妹有一条项链,这条项链由许多珠子串在一起组成,珠子是彩色的,两个连续的珠子的交汇点颜色相同 ...

随机推荐

  1. poj 2485 Highways(最小生成树,基础,最大边权)

    题目 //听说听木看懂之后,数据很水,我看看能不能水过 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stri ...

  2. 1009-2的N次方

    描述 编程精确计算2的N次方.(N是介于100和1000之间的整数). 输入 正整数N (100≤N≤1000) 输出 2的N次方 样例输入 200 样例输出 16069380442589902755 ...

  3. floodlight 中两个互相矛盾的地方

    floodlight中,添加防火墙规则,0表示最高优先级,数字越大,优先级越低;但是在StaticFlowPusher中写flow的时候,0表示最低优先级,数字越大,优先级越高,32767为最高. f ...

  4. 解决Cygwin中文乱码

    如下图所示,在执行ping或者cmd.exe命令时,Cygwin出现中文乱码: 解决方案: 在Cygwin终端上右键-->Options…-->Text-->修改Locale 为 z ...

  5. springmvc文件上传2中方法

    基于前面文章的基础上. 一.准备 需要的jar  二.配置 1.  spmvc-servlet.xml <?xml version="1.0" encoding=" ...

  6. Windows下gcc以及Qt的DLL文件调用之总结(三种方法)

    DLL与LIB的区别 :1.DLL是一个完整程序,其已经经过链接,即不存在同名引用,且有导出表,与导入表lib是一个代码集(也叫函数集)他没有链接,所以lib有冗余,当两个lib相链接时地址会重新建立 ...

  7. iOS Objective-C对象模型及应用

    前言 原创文章,转载请注明出自唐巧的技术博客. 本文主要介绍Objective-C对象模型的实现细节,以及Objective-C语言对象模型中对isa swizzling和method swizzli ...

  8. iOS LLDB调试器

    随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器.它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环 ...

  9. Java NIO1

    发现了一个很好的学习Java的外国网站,英语都是很简单的啦,看英语舒服些,关于NIO的系列就直接参照此网站了,而且是英语的! http://tutorials.jenkov.com/ Java NIO ...

  10. 254. Factor Combinations

    题目: Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a ...