Time Limit: 3000MS   Memory Limit: 65536K
Total Submissions: 8109   Accepted: 3551   Special Judge

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...

Source

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<queue>
#include<deque>
#include<iomanip>
#include<vector>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<fstream>
#include<memory>
#include<list>
#include<string>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
#define MAXN 10009
#define N 50009
#define MOD 10000007
#define INF 1000000009
const double eps = 1e-;
const double PI = acos(-1.0); struct edge
{
edge(int _v, bool _vis) :v(_v), vis(_vis){}
int v;
bool vis;
};
vector<edge> E[MAXN];
int n, m;
void DFS(int cur)
{
for (int i = ; i < E[cur].size(); i++)
{
if (!E[cur][i].vis)
{
E[cur][i].vis = true;
DFS(E[cur][i].v);
}
}
printf("%d\n", cur);
}
int main()
{
while (scanf("%d%d", &n, &m) != EOF)
{
for (int i = ; i <= n; i++)
E[i].clear();
int f, t;
for (int i = ; i < m; i++)
scanf("%d%d", &f, &t), E[f].push_back(edge(t,false)), E[t].push_back(edge(f,false));
DFS();
}
}

上面是有向图的回溯

下面是无向图。从度最大的点往前回溯

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<string>
#include<map>
#include<cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define MAXN 55
#define N 2000
typedef long long LL; /*
无向图的欧拉回路
从度最大的点开始回溯
*/
int T, n;
int g[MAXN][MAXN];
int degree[MAXN];
void dfs(int k)
{
for (int i = ; i <= ; i++)
{
if (g[k][i])
{
g[k][i]--, g[i][k]--;
dfs(i);
printf("%d %d\n", i, k);
}
}
}
int main()
{
scanf("%d", &T);
for (int cas = ; cas <= T; cas++)
{
memset(degree, , sizeof(degree));
memset(g, , sizeof(g));
scanf("%d", &n);
for (int i = ; i < n; i++)
{
int a, b;
scanf("%d%d", &a, &b);
g[a][b]++, g[b][a]++;
degree[a]++, degree[b]++;
}
int Max = -, k = -;
bool f = true;
for (int i = ; i < MAXN; i++)
{
if (degree[i] > Max)
{
Max = degree[i], k = i;
}
if (degree[i] % == )
{
f = false;
break;
}
}
printf("Case #%d\n", cas);
if (f)
dfs(k);
else
printf("some beads may be lost\n");
if (cas <= T)
printf("\n"); }
}

欧拉回路输出(DFS,不用回溯!)Watchcow POJ 2230的更多相关文章

  1. Day4 - D - Watchcow POJ - 2230

    Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to walk across the ...

  2. poj 1041(欧拉回路+输出字典序最小路径)

    题目链接:http://poj.org/problem?id=1041 思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路.一个无向图存 ...

  3. POJ 2230 DFS

    题意: Bessie 最近做了农场看守,他每天晚上的工作就是巡视农场并且保证没有坏人破坏农场.从谷仓出发去巡视,并且最终回到谷仓. Bessie 视力不是很好,不能像其他农场的看守一样,对农场的每一条 ...

  4. 洛谷1378 油滴扩展 dfs进行回溯搜索

    题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...

  5. POJ 2230 Watchcow(欧拉回路:输出点路径)

    题目链接:http://poj.org/problem?id=2230 题目大意:给你n个点m条边,Bessie希望能走过每条边两次,且两次的方向相反,让你输出以点的形式输出路径. 解题思路:其实就是 ...

  6. POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)

    Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9974 Accepted: 4307 Special Judg ...

  7. POJ 2230 Watchcow(有向图欧拉回路)

    Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to walk across the ...

  8. POJ 2230 Watchcow && USACO Watchcow 2005 January Silver (欧拉回路)

    Description Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to wal ...

  9. POJ 2230 Watchcow (欧拉回路)

    Watchcow Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5258   Accepted: 2206   Specia ...

随机推荐

  1. 清除WebSphere部署应用所对应的JSP缓存

    Web应用部署在WebSphere Application Server v8.5后程序一般放置在<AppServer>/profiles/<profile_name>/ins ...

  2. 用SpringMVC实现的上传下载

    1.导入相关jar包 commons-fileupload.jar commons-io.jar 2.配置web.xml文件 <?xml version="1.0" enco ...

  3. new mysqli_ and 旧mysql

    旧的php处理语法: 1. <select name="s" onChange="redirec()"> <option selected&g ...

  4. [转]我要学ASP.NET MVC 3.0(十二): MVC 3.0 使用自定义的Html控件

    本文转自:http://www.cnblogs.com/lukun/archive/2011/08/05/2128693.html 概述   在ASP.NET MVC框架中已经封装了很多基于Html标 ...

  5. SQL数据库基础————委托

    委托:也称为代理,事件也是一种委托:定义在类的最外面 1.定义委托关键字:delegate函数签名:签名和函数保持一致定义委托的时候要根据函数来定义public delegate int First( ...

  6. 关于.Net中Process的使用方法和各种用途汇总(一):Process用法简介

    简介: .Net中Process类功能十分强大.它可以接受程序路径启动程序,接受文件路径使用默认程序打开文件,接受超链接自动使用默认浏览器打开链接,或者打开指定文件夹等等功能. 想要使用Process ...

  7. NodeJs学习记录(四)初学阶段关于app.js里的一些重要配置

    app.set('views', path.join(__dirname, 'views')); 以上代码用于配置页面文件(例如 .ejs 文件)的根目录, 设置之后 访问 ./index 则等同于访 ...

  8. sublime 自定义快捷键

    [ { "keys": ["alt+space"], "command": "auto_complete" }, // ...

  9. android studio java.io.IOException:setDataSourse fail.

    这一次是针对Android开发中的一个小问题,权限获取的问题. 在写了一个一个小Android程序的时候,有时候普需要获取本机的文件(Audio&Video),这时候如果不加权限就会出现这种情 ...

  10. sqlserver如何查询一个表的主键都是哪些表的外键

    select object_name(a.parent_object_id) 'tables'  from sys.foreign_keys a  where a.referenced_object_ ...