poj2230 Watchcow(欧拉回路:输出点轨迹)
2016-02-02 10:32
337 查看
题意:有一个有向图,输出从1点出发经过所有边再回到1的路径,保证这种路径存在
思路:其实就要输出有向图的欧拉回路,其中把每一条边都正向反向添加进图,然后递归输出即可
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...
思路:其实就要输出有向图的欧拉回路,其中把每一条边都正向反向添加进图,然后递归输出即可
#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include <set> #include <ctime> #include <cmath> #include <cctype> using namespace std; #define maxn 50000+10 #define maxm 10000+10 #define LL long long int cas=1,T; int n,m; struct Edge { int v; bool vis; Edge(){} Edge(int v,bool vis):v(v),vis(vis){} }edges[maxm*2]; vector<Edge>G[maxn]; void init() { for (int i = 0;i<=n;i++) G[i].clear(); } void euler(int u) { for (int i = 0;i<G[u].size();i++) { Edge &e = G[u][i]; if (!e.vis) { e.vis=1; euler(e.v); } } printf("%d\n",u); } int main() { scanf("%d%d",&n,&m); for (int i = 1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); G[u].push_back(Edge(v,false)); G[v].push_back(Edge(u,false)); } euler(1); //freopen("in","r",stdin); //scanf("%d",&T); //printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC); return 0; }
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
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...
相关文章推荐
- CSS实现背景透明而背景上的文字不透明
- 1分钟内检查Linux服务器性能的命令
- android拍照保存被压缩
- JavaBean——四舍五入(保留一定的小数),MVC设计模式,EL表达式和JSTL标签快速入门,软件三层架构设计
- 【工作流】——工作流的基本介绍和如何创建顺序工作流
- 软件测试感悟
- Android自定义权限
- Android获取CPU使用率的几种方式
- VIM文本替换
- 论meta name= viewport content= width=device-width initial-scale=1 minimum-scale=1 maximum-scale=1的作用
- 常用的java应用服务器
- LTE - CSFB技术
- Memcached配置参数初解
- spring+mybatis+shiro 的配置
- mysql安装设置
- Android 使用MaterialDesign Android Library会出现的问题
- oracle从11.0.2.4.0打PSU 11.0.2.4.8
- An error occurred while collecting items to be installed session context was:(profile=DefaultProfile... 解决方案
- Centos 6.5 升级python
- Android 中ScrollView 只显示一行的问题