题意: 输入一个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的更多相关文章

  1. UVA208 Firetruck 消防车(并查集,dfs)

    要输出所有路径,又要字典序,dfs最适合了,用并查集判断1和目的地是否连通即可 #include<bits/stdc++.h> using namespace std; ; int p[m ...

  2. uva208 - Firetruck

    Firetruck The Center City fire department collaborates with the transportation department to maintai ...

  3. UVa-208 Firetruck (图的DFS)

    UVA-208 天道好轮回.UVA饶过谁. 就是一个图的DFS. 不过这个图的边太多,要事先判一下起点和终点是否联通(我喜欢用并查集),否则会TLE. #include <iostream> ...

  4. UVA - 208 Firetruck(消防车)(并查集+回溯)

    题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ...

  5. UVA-208 Firetruck (回溯)

    题目大意:给一张无向图,节点编号从1到n(n<=20),按字典序输出所有从1到n的路径. 题目分析:先判断从1是否能到n,然后再回溯. 注意:这道题有坑,按样例输出会PE. 代码如下: # in ...

  6. 【习题 7-1 UVA-208】Firetruck

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 预处理一下终点能到达哪些点. 暴力就好. 输出结果的时候,数字之间一个空格.. [代码] /* 1.Shoud it use lon ...

  7. Uva 208 - Firetruck

    [题目链接]http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&p ...

  8. UVa 208 - Firetruck 回溯+剪枝 数据

    题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ...

  9. uva208

    一道简单的路径打印,首先需要一次dfs判断能否从1到达目标点,否则可能会超时.还有一点就是那个格式需要注意下,每条路径前没有空格(看起来好像有3个空格)-. AC代码: #include<cst ...

随机推荐

  1. vue组件间的通信

    组件的定义: 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.v ...

  2. Typora 自定义主题 修改左右间距

    打开偏好设置,打开主题文件夹 比如要修改night主题中的间距,编辑night.css文件,修改#write样式即可. 修改其他样式类试.

  3. bzoj千题计划167:bzoj3527: [Zjoi2014]力

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei.      以n=4为例: ...

  4. 【翻译】Voidbox: Docker on YARN

    原文链接:Voidbox – Docker on YARN 读了此文,收获良多,翻译之,方便以后查看~ 文章介绍了Hulu北京大数据团队开发的Docker On YARN实现:Voidbox,一种基于 ...

  5. MySQL在net中Datatime转换

    <add name="adDb"         connectionString="Persist Security Info=False;database=ad ...

  6. Spring Boot后台启动不打印nohup.out

    #!/bin/bashnohup java -jar websocket-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod --serve ...

  7. 天梯赛 L2-024. (并查集) 部落

    题目链接 题目描述 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查 ...

  8. centos7.2 安装 nginx

    Centos 7 源码编译安装 Nginx 1.13 原文地址:https://renwole.com/archives/39 1.先决条件: centos7.2 64位,安装配置nginx前必须安装 ...

  9. MUI项目基础框架

    码云SVN仓库地址:https://gitee.com/lim2018/vx/tree/master MUI项目基础框架,底部导航栏切换 目录结构 index为入口页主体,sub1-4为要切换的子页面 ...

  10. 自然语言处理词向量模型-word2vec

    自然语言处理与深度学习: 语言模型: N-gram模型: N-Gram模型:在自然语言里有一个模型叫做n-gram,表示文字或语言中的n个连续的单词组成序列.在进行自然语言分析时,使用n-gram或者 ...