题目链接:http://poj.org/problem?id=1041

题目大意:

题目大意:一个城镇有n个二叉路口,这些路口由m条街道连接,某人想要从某个路口出发,经过所有的街道且每条街道只走一次,再回到出发点,让找出一个可行的路线,依次输出经过的街道编号,如果有多条路线,选择字典序最小的一条输出。

#include <cstdio>
#include <cstring>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
#define mem(a) memset(a,0,sizeof(a)) int roa[50][2000]; //这种定义二维数组的方式要牢记
int vis[2000];
int ind[100], maxn; //ind数组判断该点的度数的奇偶
int output[2000], ans; void dfs(int s)
{
int i;
for (i = 1; i <=maxn; i++)
{
if (!vis[i]&&roa[s][i])
{
vis[i]=1;
dfs(roa[s][i]);
output[ans++] = i;
}
}
} int main()
{
int a, b;
while (scanf("%d%d", &a, &b)) //大循环代表每一组数据的开始
{
int start = min(a, b);
ans = 0; mem(output);
int c; maxn = 0;
if (a == 0 && b == 0)break;
mem(vis); mem(roa); mem(ind);
while (a != 0 && b != 0)
{
scanf("%d", &c);
roa[a][c] = b;
roa[b][c] = a;
ind[a] = !ind[a]; //只需判断该点的奇偶就可以了
ind[b] = !ind[b];
maxn = max(maxn, c);
scanf("%d%d", &a, &b);
}
int i;
for (i = 1; i < 50; i++)
{
if (ind[i])break;
}
if (i < 50)
{
printf("Round trip does not exist.\n");
continue;
}
dfs(start);
for (i = ans-1; i >0; i--)printf("%d ", output[i]);
printf("%d\n", output[0]);
}
return 0;
}

2018-04-03

poj1041 【无向图欧拉回路】 按最小升序输出的更多相关文章

  1. POJ1041 John's trip 【字典序输出欧拉回路】

    题目链接:http://poj.org/problem?id=1041 题目大意:给出一个连通图,判断是否存在欧拉回路,若存在输出一条字典序最小的路径. 我的想法: 1.一开始我是用结构体记录边的起点 ...

  2. UVA10054-The Necklace(无向图欧拉回路——套圈算法)

    Problem UVA10054-The Necklace Time Limit: 3000 mSec Problem Description Input The input contains T t ...

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

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

  4. hdu 5092 线裁剪(纵向连线最小和+输出路径)

    http://acm.hdu.edu.cn/showproblem.php?pid=5092 给一个m*n的矩阵,找到一个纵向的"线"使得线上的和最小并输出这条线,线能向8个方向延 ...

  5. P4221 [WC2018]州区划分 无向图欧拉回路 FST FWT

    LINK:州区划分 把题目中四个条件进行规约 容易想到不合法当前仅当当前状态是一个无向图欧拉回路. 充要条件有两个 联通 每个点度数为偶数. 预处理出所有状态. 然后设\(f_i\)表示组成情况为i的 ...

  6. hdu 2242 无向图/求用桥一分为二后使俩个bcc点权值和之差最小并输出 /缩点+2次新图dfs

    题意如标题所述, 先无向图缩点,统计出每个bcc权,建新图,然后一遍dfs生成树,标记出每个点(新图)以及其子孙的权值之和.这样之后就可以dfs2来枚举边(原图的桥),更新最小即可. 调试了半天!原来 ...

  7. 2-sat按照最小字典序输出可行解(hdu1814)

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. hdoj 1878 欧拉回路(无向图欧拉回路+并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 思路分析:该问题给定一个无向图,要求判断该无向图是否存在欧拉回路:无向图判断存在欧拉回路的两个必 ...

  9. HDU 3251 Being a Hero(最小割+输出割边)

    Problem DescriptionYou are the hero who saved your country. As promised, the king will give you some ...

随机推荐

  1. 信息摘要算法之五:HMAC算法分析与实现

    MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMAC算法. ...

  2. Struts2框架的概述及学习重点

    什么是Struts2的框架 * Struts2是Struts1的下一代产品,是在 struts1和WebWork的技术基础上进行了合并的全新的Struts 2框架. * 其全新的Struts 2的体系 ...

  3. Scratch 2.0-Find The Mouse 发布!

    日期:2018.8.26 星期日 博客期:007 今天随便写了一个小型游戏程序,哈哈!虽然小,但用到的逻辑还是有一定水平的.呼~毕竟就这一下子也写不出来微软一样的公司嘛!哈哈,截图放上来! 游戏分为四 ...

  4. 《剑指offer》 合并两个排序的链表

    本题来自<剑指offer> 合并两个排序的链表 题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路: A:采用递归的方式(C++ C ...

  5. java实现 排序算法(鸡尾酒排序&选择排序&插入排序&二分插入排序)

    1.鸡尾酒排序算法 源程序代码: package com.SuanFa; public class Cocktial {    public static void main(String[] arg ...

  6. 谷歌、火狐浏览器 缩放为80% 时,margin值才正确

    声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...

  7. 金蝶开k3wise客户端访问中间层不时提示远程服务器不存在或不可用

    此问题一般是发生在WIN7客户端+中间层为WIN2008 R2系统,一般是中间层启用guest引起: a. 从Windows Vista以后, Negotiate (http://msdn.micro ...

  8. WARN conf.FlumeConfiguration: Could not configure sink sink1 due to: No channel configured for sink: sink1 org.apache.flume.conf.ConfigurationException: No channel configured for sink: sink1

    1.错误如下所示,启动flume采集文件到hdfs案例的时候,出现如下所示的错误: 大概是说No channel configured for sink,所以应该是sink哪里配置出现了错误,百度了一 ...

  9. C#default关键字(泛型代码中的默认关键字)

    在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:T 是引用类型还是值类型.如果 T 为值类型,则它是数值还是结构.给定参数化类型 T 的一个变量 t,只有 ...

  10. 分享微信h5支付源码

    类库代码 wechatH5Pay.php <?php //use Flight; /** * 微信支付服务器端下单 * 微信APP支付文档地址: https://pay.weixin.qq.co ...