题意: 输入一个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. [NOI1999] 棋盘分割

    COGS 100. [NOI1999] 棋盘分割 http://www.cogs.pro/cogs/problem/problem.php?pid=100 ★★   输入文件:division.in  ...

  2. <转>Android APP字体大小,不随系统的字体大小变化而变化的方法

    从android4.0起系统设置的”显示“提供设置字体大小的选项.这个设置直接会影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非.下面是解决方案 Resources r ...

  3. laravel 带条件的分页查询

    laravel 带条件的分页查询, 原文:http://blog.csdn.net/u011020900/article/details/52369094 bug:断点查询,点击分页,查询条件消失. ...

  4. CodeForces 714A

    Description Today an outstanding event is going to happen in the forest — hedgehog Filya will come t ...

  5. vue、入门

    入门vue v-on:click:chang   绑定事件点击 生面周期,整个vue的执行过程,他的应用执行了生面周期,也就是执行过程,这个执行过程如下图表,我们可以参考下图,也可以访问官方网址:ht ...

  6. java创建并配置多module的maven项目

    1 使用idea创建(推荐) 这篇博客写的特别好,很详细: https://blog.csdn.net/sinat_30160727/article/details/78109769 2 使用ecli ...

  7. 脚本病毒分析扫描专题2-Powershell代码阅读扫盲

    4.2.PowerShell 为了保障木马样本的体积很小利于传播.攻击者会借助宏->WMI->Powershell的方式下载可执行文件恶意代码.最近也经常会遇见利用Powershell通过 ...

  8. GDB调试基础

    GDB调试基础 https://lesca.me/archives/gdb-basic-knowledge.html GDB笔记(二):条件断点.命令列表.监视点 https://lesca.me/a ...

  9. aarch64_c1

    CBFlib-0.9.5.15-3.fc26.aarch64.rpm 2017-02-06 06:55 393K fedora Mirroring Project CBFlib-devel-0.9.5 ...

  10. setInterval做定时器

    <script src="/js/jquery-1.8.3.min.js"></script> <script> $(function () { ...