• 题目来源

    id=2230">http://poj.org/problem?id=2230

  • 题目大意

    求无向图从起点1開始从不同方向经过全部边的一条路径。输出随意一条。

  • 题解

    把无向图的边拆成两条方向相反的有向边,做欧拉回路。

    欧拉回路做法:

    1、起点入栈。(回路的话起点能够是随意的)

    2、扫描与起点相连的全部未被标记的边,对每条这种边都标记它,然后它的终点入栈,递归处理;

    3、假设从某个结点出发没有未被标记的边,则把这个结点出栈,增加答案序列中;

    4、反复以上步骤,直到栈空。

    5、对无向图,倒序的答案序列是一条欧拉回路。有向图正序倒序均可。

  • Code

#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 10005, maxm = 100010, nil = 0;
int n, m;
int e, pnt[maxn], nxt[maxm], u[maxm], v[maxm];
bool f[maxm];
void add(int a, int b)
{
u[++e] = a; v[e] = b;
nxt[e] = pnt[a]; pnt[a] = e;
}
void init()
{
int a, b;
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; ++i)
{
scanf("%d%d", &a, &b);
add(a, b);
add(b, a);
}
}
void dfs(int k)
{
for(int j = pnt[k]; j != nil; j = nxt[j])
{
if(!f[j])
{
f[j] = true;
dfs(v[j]);
}
}
printf("%d\n", k);
}
void work()
{
dfs(1);
}
int main()
{
init();
work();
return 0;
}

最新文章

  1. 分布式缓存技术memcached学习(二)——memcached基础命令
  2. SQLite - TRUNCATE TABLE
  3. 自定义Spring Security权限控制管理(实战篇)
  4. MVC中配置OutputCache的VaryByParam参数无效的问题
  5. css案例学习之父子块的margin
  6. C#:占位符的例子
  7. iOS越狱包 分类: ios相关 app相关 2015-06-10 10:53 152人阅读 评论(0) 收藏
  8. 724. Find Pivot Index
  9. 用Postman做自动化测试的功能
  10. Zookeeper的功能以及工作原理 (转自:http://www.cnblogs.com/felixzh/p/5869212.html)
  11. Swift中 @objc 使用介绍
  12. Determine YARN and MapReduce Memory Configuration Settings
  13. annotation的概念及其作用
  14. 阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除
  15. 微服务测试打桩/mock工具mountebank
  16. java基本语法三
  17. tikv性能参数调优
  18. 20170711xlVBA自定义分类汇总一例
  19. SWT开发工具
  20. react-native ListView 性能问题

热门文章

  1. selenium3 + python - select定位
  2. Django day08 多表操作 (三) 基于对象的跨表查询 基于双下划线的多表查询
  3. flash 遮住 div 解决办法
  4. 在.xls;*.xlsx类型文件的导入(可以导入多条数据)
  5. C# 不卡屏延时方法,延迟系统时间,但系统又能同时能执行其它任务
  6. OpenCV:OpenCV中的 parallel_for 和opencv parallel_for_
  7. mysql安装包下载地址
  8. Linux 中, 安装html转pdf工具:wkhtmltopdf
  9. 学习EXTJS6(3)基本概念
  10. 【ACM】hdu_zs2_1003_Problem C_201308031012