完全就是哭瞎的节奏···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. maven3常用命令、java项目搭建、web项目搭建详细图解

    http://blog.csdn.net/edward0830ly/article/details/8748986 ------------------------------maven3常用命令-- ...

  2. (int)、Convert.ToInt32()与int.Parse()的区别

    1.(int)是类型转换,能够使用(int)进行强类型转换的只能是数值类型,如long.short.double等,这种转换时需要考虑精度问题. 如下的代码就行不通了: string text = & ...

  3. js模块化开发

    主要有两个:一个是sea.js,另一个是require.js

  4. [转]Openstack neutron 防火墙

    全文阅读传送门:http://www.ustack.com/wp-content/uploads/2013/11/Neutron%E9%98%B2%E7%81%AB%E5%A2%99.pdf 原作者: ...

  5. 2016年2月---Javascript

    How to Learn JavaScript Properly 如何正确学习JavaScript Learn Intermediate and Advanced JavaScript 书籍: < ...

  6. React事件处理函数的bind复用和name复用

    一.bind复用 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&qu ...

  7. Java 进行 RSA 加解密时不得不考虑到的那些事儿

    1. 加密的系统不要具备解密的功能,否则 RSA 可能不太合适 公钥加密,私钥解密.加密的系统和解密的系统分开部署,加密的系统不应该同时具备解密的功能,这样即使黑客攻破了加密系统,他拿到的也只是一堆无 ...

  8. MyEclipse 2013 开发WebService

    1.在Package Explorer窗口右键File新建WebService Project项目,我的名称为:TestWebService 2.WebService Framework选择JAX-W ...

  9. KMP入门题目[不定期更新]

    HDU 1711 Number Sequence(模板题) #include <cstdio> ; ; int N, M; int textS[MAXN]; int tarS[MAXL]; ...

  10. Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.

    在部署的时候出现Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server ...