深搜解Riding the Fences
Riding the Fences
Farmer John owns a large number of fences that must be repairedannually. He traverses the fences by riding a horse along each andevery one of them (and nowhere else) and fixing the broken parts.
Farmer John is as lazy as the next farmer and hates to ride the samefence twice. Your program must read in a description of a network offences and tell Farmer John a path to traverse each fence length exactlyonce, if possible. Farmer J can, if he wishes,
start and finish at anyfence intersection.
Every fence connects two fence intersections, which are numberedinclusively from 1 through 500 (though some farms have far fewer than500 intersections). Any number of fences (>=1) can meet at a fenceintersection. It is always possible to ride from any fence
to any otherfence (i.e., all fences are "connected").
Your program must output the path of intersections that, if interpretedas a base 500 number, would have the smallest magnitude.
There will always be at least one solution for each set of inputdata supplied to your program for testing.
PROGRAM NAME: fence
INPUT FORMAT
| Line 1: | The number of fences, F (1 <= F <= 1024) |
| Line 2..F+1: | A pair of integers (1 <= i,j <=500) that tell which pair of intersections this fence connects. |
SAMPLE INPUT (file fence.in)
9
1 2
2 3
3 4
4 2
4 5
2 5
5 6
5 7
4 6
OUTPUT FORMAT
The output consists of F+1 lines, each containing a single integer.Print the number of the starting intersection on the first line, thenext intersection's number on the next line, and so on, until the finalintersection on the last line. There might be many
possible answers toany given input set, but only one is ordered correctly.
SAMPLE OUTPUT (file fence.out)
1
2
3
4
2
5
4
6
5
7
解决方式
找出起始点,然后用从起始点開始用深搜寻找欧拉路径。唯一须要注意的是两个点之间可能有多条边连接。
执行结果
Executing...
Test 1: TEST OK [0.003 secs, 4480 KB]
Test 2: TEST OK [0.003 secs, 4480 KB]
Test 3: TEST OK [0.005 secs, 4480 KB]
Test 4: TEST OK [0.003 secs, 4480 KB]
Test 5: TEST OK [0.005 secs, 4480 KB]
Test 6: TEST OK [0.008 secs, 4480 KB]
Test 7: TEST OK [0.011 secs, 4480 KB]
Test 8: TEST OK [0.014 secs, 4480 KB] All tests OK.
通过代码
/*
ID: c1033311
LANG: C++
TASK: fence
*/ #include<stdio.h>
#include<string.h> #define MAX 501
#define MAXP 1030 int point[MAXP],deg[MAX],G[MAX][MAX];
int n=0; void euler(int u)
{
int v;
for(v=1;v<MAX;++v)
{
if(G[u][v])
{
G[u][v]--;
G[v][u]--;
euler(v);
point[n++]=v;
}
}
} int main(){
FILE *fin=fopen("fence.in","r");
FILE *fout=fopen("fence.out","w"); int F,i,a,b;
int start; fscanf(fin,"%d",&F); //输入 for(i=0;i<F;++i)
{
fscanf(fin,"%d%d",&a,&b);
G[a][b]++; //两个点之间可能有多条边
G[b][a]++;
deg[a]++;
deg[b]++;
} start=1;
for(i=1;i<MAX;++i) //寻找起点
if(deg[i]%2)
{
start=i;
break;
} euler(start); //寻找欧拉路径
point[F]=start; for(i=F;i>=0;--i) //输出
fprintf(fout,"%d\n",point[i]); return 0;
}
深搜解Riding the Fences的更多相关文章
- NYOJ 10 skiing (深搜和动归)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪. 由于滑雪的确非常刺激.但是为了获得速度.滑的区域必须向下倾斜.并且 ...
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 2016弱校联盟十一专场10.2---Around the World(深搜+组合数、逆元)
题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52305 problem description In ICPCCamp, there ar ...
- 2015暑假多校联合---Cake(深搜)
题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...
- 深搜+回溯 POJ 2676 Sudoku
POJ 2676 Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17627 Accepted: 8538 ...
- 洛谷P2731 骑马修栅栏 Riding the Fences
P2731 骑马修栅栏 Riding the Fences• o 119通过o 468提交• 题目提供者该用户不存在• 标签USACO• 难度普及+/提高 提交 讨论 题解 最新讨论 • 数据有问题题 ...
- Hdu3812-Sea Sky(深搜+剪枝)
Sea and Sky are the most favorite things of iSea, even when he was a small child. Suzi once wrote: ...
- 什么时候用深搜(dfs)什么时候用广搜(bfs)(转)
1.BFS是用来搜索最短径路的解是比较合适的,比如求最少步数的解,最少交换次数的解,因为BFS搜索过程中遇到的解一定是离根最近的,所以遇到一个解,一定就是最优解,此时搜索算法可以终止.这个时候不适宜使 ...
- POJ 1128 拓扑排序 + 深搜
/* (⊙v⊙)嗯 貌似是一个建图 拓扑+深搜的过程.至于为什么要深搜嘛..一个月前敲得题现在全部推了重敲,于是明白了.因为题意要求如果有多个可能的解的话. * 就要输出字典序最小的那个.所以可以对2 ...
随机推荐
- 0x15 KMP
这个算法本身就不难. poj1961 #include<cstdio> #include<iostream> #include<cstring> #include& ...
- SAM学习笔记
SAM学习笔记 后缀自动机(模板)NSUBSTR(Caioj1471 || SPOJ 8222) [题意] 给出一个字符串S(S<=250000),令F(x)表示S的所有长度为x的子串中,出现次 ...
- 【SDOI 2016】 排列计数
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4517 [算法] 有m个数在原来的位置上,说明有(n-m)个数不再原来的位置上 那么, ...
- flask之jinji2模板介绍
1.1.模板传参 (1)主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def ...
- Android 多个APK共享数据
Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户(Android 系统是基于Linux)的.所以不同APK(用户)间互相访问数据默认是 ...
- WebApi在MVC 4中一个Controll多个post方法报错处理
http://blog.csdn.net/lqh4188/article/details/53542400(原创)
- vc6中关于“新建”
1.windows api 编程:新建→工程→Win32 Application→一个空工程→新建→文件→C++ Source File2.windows mfc 编程:新建→工程→MFC AppWi ...
- SQL--left join ,inner join, right jion, Limit
SQL Limit 语句 用于返回规定的数量记录.当数据库中的数据量十分庞大时,可以使用,返回指定的数量记录. 语句如:select * from grade limit 5.返回grade表中的前面 ...
- SQL CASE WHEN语句性能优化
背景:性能应该是功能的一个重要参考,特别是在大数据的背景之下!写SQL语句时如果仅考虑业务逻辑,而不去考虑语句效率问题,有可能导致严重的效率问题,导致功能不可用或者资源消耗过大.其中的一种情况是,处理 ...
- Incorrect integer value: '' for column 'RegNum' at row 1
数据库版本: 5.6.16操作系统: Red Hat Enterprise Linux Server release 6.3 (Santiago)在插入数据的时候提示告警:mysql> ...