POJ2230 Watchcow(欧拉回路 + dfs)
2015-09-05 09:04
465 查看
Watchcow
Description
Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to walk across the farm and make sure that no evildoers are doing any evil. She begins at the barn, makes her patrol, and then returns to the barn when she's done.
If she were a more observant cow, she might be able to just walk each of M (1 <= M <= 50,000) bidirectional trails numbered 1..M between N (2 <= N <= 10,000) fields numbered 1..N on the farm once and be confident that she's seen everything she needs to see.
But since she isn't, she wants to make sure she walks down each trail exactly twice. It's also important that her two trips along each trail be in opposite directions, so that she doesn't miss the same thing twice.
A pair of fields might be connected by more than one trail. Find a path that Bessie can follow which will meet her requirements. Such a path is guaranteed to exist.
Input
* Line 1: Two integers, N and M.
* Lines 2..M+1: Two integers denoting a pair of fields connected by a path.
Output
* Lines 1..2M+1: A list of fields she passes through, one per line, beginning and ending with the barn at field 1. If more than one solution is possible, output any solution.
Sample Input
Sample Output
Hint
OUTPUT DETAILS:
Bessie starts at 1 (barn), goes to 2, then 3, etc...
给出一个图,每次从1出发,经过每条边恰好两次,最终回到1,输出路径。
建图的时候要反向建,而后开始dfs。
AC代码:
Time Limit: 3000MS | Memory Limit: 65536K | |||
Total Submissions: 6493 | Accepted: 2829 | Special Judge |
Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to walk across the farm and make sure that no evildoers are doing any evil. She begins at the barn, makes her patrol, and then returns to the barn when she's done.
If she were a more observant cow, she might be able to just walk each of M (1 <= M <= 50,000) bidirectional trails numbered 1..M between N (2 <= N <= 10,000) fields numbered 1..N on the farm once and be confident that she's seen everything she needs to see.
But since she isn't, she wants to make sure she walks down each trail exactly twice. It's also important that her two trips along each trail be in opposite directions, so that she doesn't miss the same thing twice.
A pair of fields might be connected by more than one trail. Find a path that Bessie can follow which will meet her requirements. Such a path is guaranteed to exist.
Input
* Line 1: Two integers, N and M.
* Lines 2..M+1: Two integers denoting a pair of fields connected by a path.
Output
* Lines 1..2M+1: A list of fields she passes through, one per line, beginning and ending with the barn at field 1. If more than one solution is possible, output any solution.
Sample Input
4 5 1 2 1 4 2 3 2 4 3 4
Sample Output
1 2 3 4 2 1 4 3 2 4 1
Hint
OUTPUT DETAILS:
Bessie starts at 1 (barn), goes to 2, then 3, etc...
给出一个图,每次从1出发,经过每条边恰好两次,最终回到1,输出路径。
建图的时候要反向建,而后开始dfs。
AC代码:
#include "iostream" #include "cstdio" #include "cstring" #include "algorithm" #include "vector" using namespace std; const int MAXN = 1e4 + 10; struct node { /* data */ int v; bool vis; }; int n, m; vector<node> v[MAXN]; void dfs(int x) { for(int i = 0; i < v[x].size(); ++i) if(!v[x][i].vis) { v[x][i].vis = true; dfs(v[x][i].v); } printf("%d\n", x); } int main(int argc, char const *argv[]) { while(scanf("%d%d", &n, &m) != EOF) { while(m--) { int x, y; scanf("%d%d", &x, &y); node tmp; tmp.v = y; tmp.vis = false; v[x].push_back(tmp); tmp.v = x; v[y].push_back(tmp); } dfs(1); } return 0; }
相关文章推荐
- 设计模式(九)外观模式Facade(结构型)
- HDU 5240 Exam
- [转] Mybatis 示例之 SelectKey
- [Embeded--SW_分层]C代码分层
- 剑指offer之丑数
- HDU 5237 Base64
- CSS教程:div设置float后高度不自动增加
- CSS选择器
- 微软公布最新Win10 Insider会员数量 已突破700万
- 20150905看电影学英语
- CAAnimationGroup-倒入垃圾桶实例
- hihoCoder 1116 计算 (线段树)
- Scala中结构类型实战详解之Scala学习笔记-43
- 如何引用一个已经定义过的全局变量
- 一切成功源于积累——20150905 美国非农15分钟k线直至收盘 各货币对表现 差于预期 好坏不一
- Linux技巧:多核下绑定硬件进程到不同CPU
- 彼得林奇的成功投资---学习之一
- 轻松搞定面试中的二叉树题目
- phpMyAdmin The mbstring extension is missing. Please check your PHP configuration.
- Web安全之SQL注入