UVa 208 Firetruck【回溯】
题意:给出一个n个节点的无向图,以及某个节点k,按照字典序从小到大输出从节点1到节点k的所有路径
看的题解
http://blog.csdn.net/hcbbt/article/details/9755147
因为节点数很少(小于20),所以可以先用floyd处理一下,判断一点是否能够到达终点
然后就像紫书里面枚举排列那样的去挨个找出字典序从小到大的路径
题解里面说到的无回溯的走遍和终点相连的所有点,他写的代码是判断的d[en][i],判断终点到i点是否可达
写成d[i][en]也能过,因为是无向图
#include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=; int d[maxn][maxn],rute[maxn],vis[maxn];
int en,n,ans; void dfs(int x,int cnt){
if(x==en){
printf("");
for(int i=;i<cnt-;i++) printf(" %d",rute[i]);
printf(" %d\n",en);
ans++;
return;
} for(int i=;i<=n;i++){
if(!vis[i]&&d[x][i]==&&d[i][en]!=INF){ rute[cnt]=i;
vis[i]=;
dfs(i,cnt+);
vis[i]=;
}
}
} int main(){
int kase=;
while(scanf("%d",&en)!=EOF){
int u,v;
n=-;
for(int i=;i<=;i++){
for(int j=;j<=;j++) {
d[i][j]=INF;
}
} while(scanf("%d %d",&u,&v)&&(u||v)){
d[u][v]=d[v][u]=;
n=max(max(u,v),n);//找出这张图里面最大的点的标号
} for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]); ans=;
memset(vis,,sizeof(vis)); printf("CASE %d:\n", ++kase);
dfs(,);
printf("There are %d routes from the firestation to streetcorner %d.\n", ans, en);
}
return ;
}
不知道是不是真的理解了的说啊-----
加油啊---g00000000000
UVa 208 Firetruck【回溯】的更多相关文章
- UVa 208 - Firetruck 回溯+剪枝 数据
		题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ... 
- UVA - 208 Firetruck(消防车)(并查集+回溯)
		题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ... 
- Uva 208 - Firetruck
		[题目链接]http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&p ... 
- UVA - 208 Firetruck(并查集+dfs)
		题目: 给出一个结点d和一个无向图中所有的边,按字典序输出这个无向图中所有从1到d的路径. 思路: 1.看到紫书上的提示,如果不预先判断结点1是否能直接到达结点d,上来就直接dfs搜索的话会超时,于是 ... 
- 【UVa】208 Firetruck(dfs)
		题目 题目 分析 一开始不信lrj的话,没判联通,果然T了. 没必要全部跑一遍判,只需要判断一下有没有点与n联通,邻接表不太好判,但无向图可以转换成去判n与什么联通. 关于为什么要判,还是因为 ... 
- UVa 208 消防车(dfs+剪枝)
		https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ... 
- UVA 208 (DFS)
		题意:找出1到T的所有路径: 坑点:一开始以为是到终点,读错了题意,没测试第二个样例,结果WA了4遍,坑大了: #include <iostream> #include <cmath ... 
- 习题7-1 uva 208(剪枝)
		题意:按最小字典序输出a到b 的所有路径. 思路:先处理出个点到目标点b的情况(是否能到达),搜索即可. 最开始我只判了a能否到b,然后给我的是WA,然后看了半天感觉思路没什么问题,然后把所有点都处理 ... 
- UVA题目分类
		题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ... 
随机推荐
- FPGA中亚稳态——让你无处可逃
			1. 应用背景 1.1 亚稳态发生原因 在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery ti ... 
- PFILE和SPFILE介绍
			一.PFILE Pfile(Parameter File,参数文件)是基于文本格式的参数文件,含有数据库的配置参数. 1.PFILE - initSID.ora(默认PFILE名称),位置在$ORAC ... 
- jqGrid多级表格的实现
			原博主链接:http://blog.csdn.net/dreamstar613/article/details/54616503 jqGrid多级表格(可N级) 主要用的方法: subGridRowE ... 
- C++之const关键字
			本文引自http://www.cnblogs.com/lichkingct/archive/2009/04/21/1440848.html ,略有增删 const关键字在c++中用法有很多,总结如下: ... 
- 前端模块化  |  解读JS模块化开发中的 require、import 和 export
			本篇分为两个部分 第一部分:总结了ES6出现之前,在当时现有的运行环境中,实现"模块"的方式: 第二部分:总结了ES6出现后,module成为ES6标准,客户端实现模块化的解决方案 ... 
- Android 国际区号注册手机号编码 以及常用城市列表
			附上 国际区号编码:我是定义到arrays.xml里面了 <?xml version="1.0" encoding="utf-8"?> <re ... 
- Java文件(io)编程——文件字节流的使用
			案例1: 演示FileInputStream类的使用(用FileInputStream的对象把文件读入到内存) 首先要在E盘新建一个文本文件,命名为test.txt,输入若干字符 public cla ... 
- 转js resplace方法使用
			作者: hezhiwu5#163.com 时间:2007-3-22 大家好!!今晚在华软G43*宿舍没什么事做,把javascript中replace方法讲解一下,如果讲得不对或不合理是情理之中 ... 
- rem 使用
			html{ font-size:12px; } .btn { width: 6rem; height: 3rem; line-height: 3rem; font-size: 2rem; displa ... 
- 3ds Max灯光教程之卧室灯光布局实例
			对于设计师来说要做好一张好的作品效果图包括很多比如:“造型.色彩搭配.灯光气氛.构图角度等等,上次给大家详细的分析了下产品渲染中摄像机的构图及原理.本期教程来跟大家讨论一下max场景灯光布局问题.以卧 ... 
