深搜解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 ...
随机推荐
- iOS:编译错误[__NSDictionaryM objectAtIndexedSubscript:]: unrecognized selector sent to instance 0xa79e61
这个意思是,__NSDictionaryM 无法将值传到下标索引对象,言简意赅就是数组越界.可是再看看,这是数组吗?不是,所以.遇到这样的crash,我这里有两种情况: 1.首先看看你 indexP ...
- java 线程 生产者-消费者与队列,任务间使用管道进行输入、输出 解说演示样例 --thinking java4
package org.rui.thread.block2; import java.io.BufferedReader; import java.io.IOException; import jav ...
- MAME 0.201 发布,重温童年的街机模拟器
MAME 0.201 已发布,MAME 最初是街机模拟器,随着时间的推移,MAME 吸收了姊妹项目 MESS(多机种模拟器超级系统),所以 MAME 现在还记录了各种各样的(大多是老式的)电脑游戏.掌 ...
- 重构版机房收费系统之分层、接口、数据库连接、反射+工厂(vb.net)
分层 分层是为了减少层与层之间的依赖,添加程序的可读性,让整个系统结构清晰明白.还可大大减少维护成本,可是分层也有一定的缺点,有些能够直接訪问数据库的层,却要通过负责訪问数据库的层进行訪问.这样,在訪 ...
- 一个登录页面的spring 逻辑过程
1.首先用户访问login.jsp 2.用户在登录页面输入用户名/密码,提交表单到服务器,Spring根据配置调用LoginController控制器响应登录请求(关键) 3.LoginControl ...
- JEE Spring-boot 简单的ioc写法。
什么是ioc,就是你可能会有一些生活必需品,这些东西你必须要用才能存活.但是你不是每天都回去买,去哪一家点去买.而这些用品会一直放在哪里,每一个商店就是一个容器,包裹着这些物品. 创建ioc项目,首先 ...
- Clonezilla制作镜像时报错: errextfsclone.c:bitmap free count err
在检查时选中下面的选项, 如下图: -fsck-src-part Interactively check and repair source file
- Pyhton学习——Day24
# #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...
- CentOS 7最小安装配置网络
安装环境: VMware Workstation14 centos 7.5.1804 最小化安装 安装过程: 在系统安装成功后进行网络配置,我这里采用的是动态ip配置.首先得知道网络配置存放的目录: ...
- pupload上传插件问题整理
前些日子公司网站需要开发一个类似与百度文库上传文档的功能,实现文档的批量上传.展示以及继续上传的功能.开发完成后,通过在多版浏览器下的使用,发现了一系列问题,特总结于下,以免来者在这些问题上耗费太多时 ...