UVa 10054,欧拉回路
题目链接:https://uva.onlinejudge.org/external/100/10054.pdf
题目链接:http://vjudge.net/contest/132239#problem/C
欧拉回路公式:
1、图是连通的。
2、所有点的度都是偶数。
tip: 网上有很多解法,几乎都是一样,由于UVa的数据都是连通的,几乎都没有判连通。
#include <stdio.h>
#include <string.h>
#include <bits/stdc++.h> using namespace std; #define N 55
#define MAX 1010
int g[N][N],vis[N];
int d[N];
int n; void euler(int u)
{
int v;
for(v=; v<=; v++)
if(g[u][v])
{
g[u][v]--;
g[v][u]--;
euler(v);
printf("%d %d\n",v,u);
}
} void dfs(int k)
{
vis[k] = true;
for(int i=; i<=; i++)
{
if(g[k][i])
{
if(!vis[i])
dfs(i);
}
}
} int main()
{
//freopen("input.txt","r",stdin);
int t,T;
int i;
int u,v;
scanf("%d",&T);
vector<int> Q;
for(t= ; t<=T; t++)
{
memset(g,,sizeof(g));
memset(vis,,sizeof(vis));
memset(d,,sizeof(d));
Q.clear();
scanf("%d",&n);
for(i= ; i<=n; i++)
{
scanf("%d%d",&u,&v);
d[u]++;
d[v]++;
g[u][v]++;
g[v][u]++;
Q.push_back(u);
Q.push_back(v);
}
printf("Case #%d\n",t); dfs(Q[]);
bool flag = true;
for(i=; i<Q.size(); i++)
{
if(!vis[Q[i]])
{
flag = false;
break;
}
} if(!flag)
{
printf("some beads may be lost\n");
if(t!=T) printf("\n");
}
//图是连通的,要判断所有点的度是否有为偶数
else
{
for(i= ; i<=; i++)
if(d[i]%)
break;
if(i<=)
printf("some beads may be lost\n");
else //图连通而且所有点的度都为偶数,则是一个欧拉回路,输出路径
for(i=; i<=; i++)
euler(i);
if(t!=T) printf("\n");
}
}
return ;
}
UVa 10054,欧拉回路的更多相关文章
- Uva 10054 欧拉回路 打印路径
看是否有欧拉回路 有的话打印路径 欧拉回路存在的条件: 如果是有向图的话 1.底图必须是连通图 2.最多有两个点的入度不等于出度 且一个点的入度=出度+1 一个点的入度=出度-1 如果是无向图的话 1 ...
- UVA 10054 (欧拉回路) The Necklace
题目:这里 题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能 复原成完整的项链. 把 ...
- UVA 10054 The Necklace(欧拉回路,打印路径)
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA 10054 the necklace 欧拉回路
有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...
- UVa 10054 (打印欧拉回路) The Necklace
将每个颜色看成一个顶点,对于每个珠子在两个颜色之间连一条无向边,然后求欧拉回路. #include <cstdio> #include <cstring> + ; int G[ ...
- uva 10054 The Necklace 拼项链 欧拉回路基础应用
昨天做了道水题,今天这题是比较水的应用. 给出n个项链的珠子,珠子的两端有两种颜色,项链上相邻的珠子要颜色匹配,判断能不能拼凑成一天项链. 是挺水的,但是一开始我把整个项链看成一个点,然后用dfs去找 ...
- UVa 10054 The Necklace【欧拉回路】
题意:给出n个珠子,珠子颜色分为两半,分别用1到50之间的数字表示, 现在给出n个珠子分别的颜色,问是否能够串成一个环.即为首尾相连,成为一个回路 判断是否构成一个环,即判断是否为欧拉回路,只需要判断 ...
- uva 10054 The Necklac(欧拉回路)
明显的欧拉回路,把颜色作为点,建图后,做一遍欧拉回路.不过我是现学的,打印路径上纠结了一下,发现随着FindEuler()的递归调用的结束,不断把点压入栈中,从后向前打印,遇到"支路&quo ...
- UVa 10054 The Necklace BFS+建模欧拉回路
算法指南 主要就是建立欧拉回路 #include <stdio.h> #include <string.h> #include <iostream> #includ ...
随机推荐
- linux 命令之 insmod
man insmod: INSMOD(8) insmod INSMOD(8) NAME insmod - Simple program to insert a module into the Linu ...
- WAL
WAL record format typedef struct XLogRecord{pg_crc32 xl_crc; /* CRC for this record */XLogRe ...
- How to export a template in Visual Studio?
Create a customize template file: 1.template arguments introduction like: 上图只是其中一部分,更多请查看文后的参考资源 tem ...
- [转]Java中的多线程你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- HttpContext.Current 的缺陷
了解ASP.NET的开发人员都知道它有个非常强大的对象 HttpContext,而且为了方便,ASP.NET还为它提供了一个静态属性HttpContext.Current来访问它,今天的博客打算就从H ...
- 用Appium去操作移动设备上的chrome
最近在积极努力的学习Appium,今天成功运行了官网上的demo,在此做一个小小的总结: 前期准备工作: (1)在要运行的真机或模拟器上安装chrome. 注意:x86的虚拟机是不支持的,但是经过本人 ...
- linux与windows的文本文件之间的转换
在CentOS中需要安装一个软件包:tofrodos 包里包含的命令可以用包管理工具列出包里的文件. 以 CentOS 的 rpm 为例: rpm -ql tofrodos 在ArchLinux中需要 ...
- [转]通过PowerShell工具跨多台服务器执行SQL脚本
转至:http://www.cnblogs.com/SameZhao/p/4743692.html 有时候,当我们并没有合适的第三方工具(大部分需要付费)去管理多台数据库服务器,那么如何做最省力.省心 ...
- Test Android with QTP
by Yaron Assa I have recently come across a plug-in to QTP that enables to automate tests on Android ...
- Java生产者和消费者问题
容器类Box.java public class Box { private int num = 0; public void put(){ if(num==10){ try { System.out ...