题目:这里

题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能

复原成完整的项链。

把每种颜色看成一个结点,每个珠子的两半连成一条有向边,就成了判断一个欧拉回路了,而输出回路路线可以用dfs,逆序输出,因为顺序输出的时候,由于可能会有一个结点上多

条边的情况,dfs的时候可能一开始会找到错误的路线再回溯回去,顺序输出就把这段错误的路线也输出了。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std; const int M = 1e3 + ;
int cas,head[M*],father[],du[];
int vis[][]; struct Edge{
int next,to;
}edge[M*]; int findest(int x)
{
if (x==father[x]) return x;
father[x]=findest(father[x]);
return father[x];
} void add(int v,int u)
{
edge[++cas].next=head[v];
edge[cas].to=u;
head[v]=cas;
} void euler(int u)
{
for (int i=head[u] ; i ; i=edge[i].next){
int v=edge[i].to;
if (!vis[u][v]) continue;
vis[u][v]--;vis[v][u]--;
euler(edge[i].to);
printf("%d %d\n",v,u);
}
} int main()
{
int t,tem=;
scanf("%d",&t);
int e=t;
while (t--)
{
int n,w;cas=;
scanf("%d",&n);
memset(du,,sizeof(du));
memset(vis,,sizeof(vis));
memset(head,,sizeof(head));
for (int i= ; i<= ; i++) father[i]=i;
for (int i= ; i<=n ; i++) {
int l,r;
scanf("%d%d",&l,&r);
if (i==) w=l;
du[l]++;du[r]++;
add(l,r);
add(r,l);
vis[l][r]++;vis[r][l]++;
int x=findest(l),y=findest(r);
if (x!=y) father[x]=y;
}
bool flag=false;
int x=findest(w);
for (int i= ; i<= ; i++){
if (du[i]==) continue;
if (du[i]%!=) flag=true;
if (findest(i)!=x) flag=true;
if (flag) break;
}
cas=;
if (tem!=) printf("\n");
printf("Case #%d\n",++tem);
if (flag) puts("some beads may be lost");
else euler(w);
}
return ;
}

最新文章

  1. [Java] Maven 安装和配置
  2. Java类名.class和getClass()区别
  3. PHPstorm设置连接FTP,进行文件上传、下载、比较
  4. 基于MVC4+EasyUI的Web开发框架形成之旅--界面控件的使用
  5. Uniscribe文字自动换行
  6. 深入理解spring中的各种注解
  7. 解析使用ThinkPHP应该掌握的调试手段
  8. 【转】C# 解析JSON方法总结
  9. Java 常见异常及趣味解释
  10. pm grant 命令
  11. Nginx配置性能优化与压力测试webbench【转】
  12. 学习笔记—JVM
  13. git的一些补充点
  14. 201671010142 Java基本程序设计结构学习的感悟
  15. 记一次yarn导致cpu飙高的异常排查经历
  16. Java String和StringBuffer和StringBuilder
  17. NOIP2017提高组预赛详解
  18. UCOSII笔记---信号量、邮箱、消息队列、信号量集、软件定时器
  19. sublime安装package control 的方法
  20. 探索解析微服务下的RabbitMQ

热门文章

  1. artTemplate 自动化编译之tmod
  2. Spark Streaming源码解读之数据清理内幕彻底解密
  3. 中文字号VS英文字号(磅)VS像素值
  4. [转载]Python 资源大全
  5. XHProf中文手册
  6. &lt;读书笔记&gt;软件调试之道 :问题的核心-修复后的反思
  7. CSS3知识点总结----属性选择器
  8. EUI 自动滚动的聊天文本
  9. 实验楼课程管理程序-深入学习《C++ Primer第五版》实验报告&amp;学习笔记1
  10. linux小程序--cmatrix