Uva 10054 欧拉回路 打印路径
看是否有欧拉回路 有的话打印路径
欧拉回路存在的条件:
如果是有向图的话
1.底图必须是连通图
2.最多有两个点的入度不等于出度 且一个点的入度=出度+1 一个点的入度=出度-1
如果是无向图的话
1.如果这个无向图的连通的 当最多只有两个度数为奇数的点 就一定有欧拉回路
当有两个度数为奇数的点的时候 一个为起点 一个为终点
//============================================================================
// Name : UVA.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================ #include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <map>
#include <vector>
using namespace std;
const int MAXN=;
int F[];
int find(int x)
{
if(F[x]==-)return x;
else return F[x]=find(F[x]);
}
void bing(int x,int y)
{
int t1=find(x);
int t2=find(y);
if(t1!=t2)F[t1]=t2;
}
int num[];
int G[][];
void Traverse(int u)
{
for(int v=;v<=;v++)
if(G[u][v]>)
{
G[u][v]--;
G[v][u]--;
Traverse(v);
printf("%d %d\n",v,u);
}
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int T;
int n;
scanf("%d",&T);
int iCase=;
while(T--)
{
if(iCase>)printf("\n");
iCase++;
scanf("%d",&n);
int u,v;
memset(F,-,sizeof(F));
memset(num,,sizeof(num));
memset(G,,sizeof(G));
for(int i=;i<n;i++)
{
scanf("%d%d",&u,&v);
num[u]++;
num[v]++;
bing(u,v);
G[u][v]++;
G[v][u]++;
}
bool flag=true;
int temp=-;
for(int i=;i<=;i++)
{
if(num[i]==)continue;
if(num[i]%)
{
flag=false;
break;
}
if(temp==-)
{
temp=find(i);
continue;
}
if(temp!=find(i))
{
flag=false;
break;
}
}
printf("Case #%d\n",iCase);
if(!flag)
{
printf("some beads may be lost\n");
continue;
}
for(int i=;i<=;i++)
if(num[i]!=)
{
u=i;
break;
}
Traverse(u);
}
return ;
}
Uva 10054 欧拉回路 打印路径的更多相关文章
- John's trip(POJ1041+欧拉回路+打印路径)
题目链接:http://poj.org/problem?id=1041 题目: 题意:给你n条街道,m个路口,每次输入以0 0结束,给你的u v t分别表示路口u和v由t这条街道连接,要输出从起点出发 ...
- Watchcow(POJ2230+双向欧拉回路+打印路径)
题目链接:http://poj.org/problem?id=2230 题目: 题意:给你m条路径,求一条路径使得从1出发最后回到1,并满足每条路径都恰好被沿着正反两个方向经过一次. 思路:由于可以回 ...
- UVA 10054 (欧拉回路) The Necklace
题目:这里 题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能 复原成完整的项链. 把 ...
- What Goes Up UVA - 481 LIS+打印路径 【模板】
打印严格上升子序列: #include<iostream> #include<cstdio> #include<algorithm> #include<cst ...
- UVA 10054 The Necklace(欧拉回路,打印路径)
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 10054 The Necklac(欧拉回路)
明显的欧拉回路,把颜色作为点,建图后,做一遍欧拉回路.不过我是现学的,打印路径上纠结了一下,发现随着FindEuler()的递归调用的结束,不断把点压入栈中,从后向前打印,遇到"支路&quo ...
- UVa 103 - Stacking Boxes (LIS,打印路径)
链接:UVa 103 题意:给n维图形,它们的边长是{d1,d2,d3...dn}, 对于两个n维图形,求满足当中一个的全部边长 依照随意顺序都一一相应小于还有一个的边长,这种最长序列的个数,而且打 ...
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
option=com_onlinejudge&Itemid=8&page=show_problem&problem=1072">链接:UVa 10131 题意: ...
- 【欧拉回路】UVA - 10054 The Necklace
题目大意: 一个环被切割成了n个小块,每个小块有头尾两个关键字,表示颜色. 目标是判断给出的n个小块能否重构成环,能则输出一种可行解(按重构次序输出n个色块的头尾颜色).反之输出“some beads ...
随机推荐
- Windows UI Library - Roadmap Win UI3.0
https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md 微软更新太快了.是不是要把开发人员折磨死.... ...
- css(float浮动和clear清除)
教程开始: 首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1 ...
- mysql登录的三种方式
1.远程登录mysql 先授权:如:grant all on *.* to 'root'@'192.168.81.130' identified by '52033dd';查看是否生效:select ...
- 配置pip镜像源(转)
使用pip安装python扩展时,如若没有配置国内镜像源,在未翻墙的情况下,其下载速度将会特别缓慢.因此,有些时候我们必须使用国内镜像源,来解决pip下载安装速度慢的问题,比较常用的国内镜像包括: 阿 ...
- 【转】Unity ZTest 深度测试 & ZWrite 深度写入
原文连接:https://www.cnblogs.com/ljx12138/p/5341381.html 参考另一篇写的比较好的:Unity Shader中的 ZTest & ZWrite 初 ...
- ssh连接报错
1.ssh: connect to host 172.16.0.142 port 22: Connection refused 解决: 在sshd 被连接端输入: [root@ecs-01 ~]# e ...
- 解决 /usr/lib/x86_64-linux-gnu/liblapack.so.3: undefined reference to `gotoblas'
最近需要用到openblas库,本地ubuntu 系统内有一个版本,但是想用自己新编译的openblas, 使用cmake指定了链接的库地址, SET(LINK_LIB_DIRS "/usr ...
- VBA删除空白行列
'删除空行 Sub DeleteEmptyRows() Dim LastRow As Long, r As Long LastRow = ActiveSheet.UsedRange.Rows.Coun ...
- SpringMVC以POST提交表单中文乱码解决方案。
在web.xml中添加字符集过滤器: <filter> <filter-name>characterEncodingFilter</filter-name> < ...
- Prometheus Querying Function rate() vs irate()
rate() rate(v range-vector) calculates the per-second average rate of increase of the time series in ...