7-1 FireTruck 消防车 uva208
题意: 输入一个n <=20 个结点的无向图以及某个结点k 按照字典序从小到大顺序输出从结点1到结点k的所有路径 要求结点不能重复经过
标准回溯法
要实现从小到大字典序 现在数组中排序好即可
标记数组一定要删去!!!!切记 又因为这个弄错了
提高效率的方法:
先遍历一遍所有点 把和k点相关的点存入数组中 那些无关的点根本用不到
同时也解决了如果 1与k不相连所造成的大量时间浪费
#include<bits/stdc++.h>
using namespace std;
#define N 22
int k;
int path[N];
int mp[N][N];
int cnt=;
int vis[N];
vector<int>s;
void dfs1(int x)
{
vis[x]=;
s.push_back(x);
for(int i=;i<;i++)
if(mp[x][i]&&!vis[i])
dfs1(i);
} void dfs(int node,int cur)
{
if(node==k)
{
cnt++;
printf("");
for(int i=;i<cur;i++)
printf(" %d",path[i]);
printf("\n");
} for(int i=;i<s.size();i++)
{
if(mp[node][s[i]])
if(!vis[ s[i] ])
{
path[cur]=s[i];
vis[ s[i] ]=;
dfs( s[i] ,cur+);
vis[ s[i] ]=;
}
}
} int main()
{ int cas=;
while(scanf("%d",&k)==&&k)
{
int a,b;
memset(mp,,sizeof mp); while(scanf("%d %d",&a,&b)&&b&&a)
{
mp[a][b]=mp[b][a]=;
}
s.clear();
path[]=;
cnt=;
dfs1(k);
sort(s.begin(),s.end());
memset(vis,,sizeof vis);
printf("CASE %d:\n",++cas);
dfs(,);
printf("There are %d routes from the firestation to streetcorner %d.\n", cnt, k);
}
}
7-1 FireTruck 消防车 uva208的更多相关文章
- UVA208 Firetruck 消防车(并查集,dfs)
要输出所有路径,又要字典序,dfs最适合了,用并查集判断1和目的地是否连通即可 #include<bits/stdc++.h> using namespace std; ; int p[m ...
- uva208 - Firetruck
Firetruck The Center City fire department collaborates with the transportation department to maintai ...
- UVa-208 Firetruck (图的DFS)
UVA-208 天道好轮回.UVA饶过谁. 就是一个图的DFS. 不过这个图的边太多,要事先判一下起点和终点是否联通(我喜欢用并查集),否则会TLE. #include <iostream> ...
- UVA - 208 Firetruck(消防车)(并查集+回溯)
题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ...
- UVA-208 Firetruck (回溯)
题目大意:给一张无向图,节点编号从1到n(n<=20),按字典序输出所有从1到n的路径. 题目分析:先判断从1是否能到n,然后再回溯. 注意:这道题有坑,按样例输出会PE. 代码如下: # in ...
- 【习题 7-1 UVA-208】Firetruck
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 预处理一下终点能到达哪些点. 暴力就好. 输出结果的时候,数字之间一个空格.. [代码] /* 1.Shoud it use lon ...
- Uva 208 - Firetruck
[题目链接]http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&p ...
- UVa 208 - Firetruck 回溯+剪枝 数据
题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ...
- uva208
一道简单的路径打印,首先需要一次dfs判断能否从1到达目标点,否则可能会超时.还有一点就是那个格式需要注意下,每条路径前没有空格(看起来好像有3个空格)-. AC代码: #include<cst ...
随机推荐
- vue 开发过程中遇到的问题
1. gitlab团队协作开发 2. element ui 问题集锦 3. 使用vue和ElementUI快速开发后台管理系统
- bzoj千题计划125:bzoj1037: [ZJOI2008]生日聚会Party
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 一个区间是否满足 任意连续的一段,男孩与女孩的数目之差不超过k, 取决于男孩与女孩数目之差的最 ...
- 华为mate 10 pro安装失败,提示没有未包含任何证书
原因: Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护.在默认情况下,Androi ...
- 基于bootstrup treeview多级列表树插件
<!doctype html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- 《设计模式》-原则二:里氏代换原则(LSP)
回顾一下上一节说的“开闭原则” 说的是 一个软件要遵循对修改关闭 对新功能扩展的原则. 这一次来说说 “里氏代换原则” 意思是说:子类型必须能代替他们的基类. 看了半天的例子 好像 是懂非懂啊...相 ...
- asp.net菜鸟到中级程序员的飞跃 --30本好书点评
如果你是一个菜鸟或者自认为初学者那么本文非常适合你:不能说这30本书就是最佳组合,但是可以说这个组合不差:本人曾博览群书,很多书重复,很多书讲的不适用,这些书都是目前书店可以买到的:达到中级程序员以后 ...
- 【Foreign】Rectangle [KD-tree]
Rectangle Time Limit: 50 Sec Memory Limit: 512 MB Description Input Output Sample Input 0 4 2 0 2 1 ...
- HDU 4690 EBCDIC 2013 Multi-University Training Contest 9
解题报告:一个模拟题,有两张表格,然后输入一个字符在第一章表格中的位置,让你找出这个字符在第二章表对应的位置. 我欧诺个的是暴力打表,输了两百多个数字,时间复杂度直接降到O(1),这题觉得比较坑的就是 ...
- CentOs7 Python3安装Openssl以及解决ssl问题
一.安装OpenssL 1.下载的压缩包放在根目录 wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz 2.在文件夹下解压缩,得到open ...
- 单调栈(G - Sliding Window POJ - 2823 )
题目链接:https://cn.vjudge.net/contest/276251#problem/G 题目大意:给你n和m,然后问你对于(m,n)这中间的每一个数,(i-m+1,i)这个区间的最小值 ...