【题目链接】http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=144

【随笔侃述】这题感想多过于解题的思路,TL不可避免,很难想象1Y过的是何方神圣,当然不敢否定有经验和敢于尝试的人会在TL几次后马上领悟灯亮后敲出AC的代码,需要预处理的原因是:尽管Case可能给你很多跟1连通的点但最终1跟目的之间能连通的路径去找不到,这得消耗很多的时间做无用功。TL的原因就可能出在此处

【解题思路】现将所有能连通到目的点的点放入一个数组,来一个排序(题目告诉你按顺序输出而不会是special judge)然后再进行深度查找,遍历输出。

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXN 22
int road[MAXN][MAXN], path[MAXN], visit[MAXN], link[MAXN];
int n, num, lastnum, huge; int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
} void previous(int cur)
{
int i;
link[lastnum++] = cur;
visit[cur] = ;
for(i=; i<=num; ++i)
{
if(road[cur][i] && !visit[i])
previous(i);
}
return;
} void Traverse(int cur, int des, int cnt)
{
int i, j, temp;
if(cur == des)
{
j = ;
printf("");
for(i=; i<cnt; ++i)
{
j = ;
printf(" %d", path[i]);
}
printf("\n");
n += j;
return;
}
for(i=; i<lastnum; ++i)
{
temp = link[i];
if(road[cur][temp] && !visit[temp])
{
path[cnt] = temp;
visit[temp] = ;
Traverse(temp, des, cnt+);
visit[temp] = ;
}
}
} int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
int i, j, des, from, to, t=;
while(scanf("%d", &des) != EOF)
{
memset(road, , sizeof(road));
memset(visit, , sizeof(visit));
num = ;
while(scanf("%d%d", &from, &to) != EOF)
{
if(!from && !to) break;
road[from][to] = road[to][from] = ;
if(num < from) num = from;
if(num < to) num = to;
}
n = ;
lastnum = ;
previous(des);
memset(visit, , sizeof(visit));
qsort(link, lastnum, sizeof(int), cmp);
visit[] = ;
printf("CASE %d:\n", ++t);
Traverse(, des, );
printf("There are %d routes from the firestation to streetcorner %d.\n", n, des);
}
return ;
}

Uva 208 - Firetruck的更多相关文章

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

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

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

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

  3. UVA - 208 Firetruck(并查集+dfs)

    题目: 给出一个结点d和一个无向图中所有的边,按字典序输出这个无向图中所有从1到d的路径. 思路: 1.看到紫书上的提示,如果不预先判断结点1是否能直接到达结点d,上来就直接dfs搜索的话会超时,于是 ...

  4. UVa 208 Firetruck【回溯】

    题意:给出一个n个节点的无向图,以及某个节点k,按照字典序从小到大输出从节点1到节点k的所有路径 看的题解 http://blog.csdn.net/hcbbt/article/details/975 ...

  5. 【UVa】208 Firetruck(dfs)

    题目 题目     分析 一开始不信lrj的话,没判联通,果然T了. 没必要全部跑一遍判,只需要判断一下有没有点与n联通,邻接表不太好判,但无向图可以转换成去判n与什么联通. 关于为什么要判,还是因为 ...

  6. UVa 208 消防车(dfs+剪枝)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. UVA 208 (DFS)

    题意:找出1到T的所有路径: 坑点:一开始以为是到终点,读错了题意,没测试第二个样例,结果WA了4遍,坑大了: #include <iostream> #include <cmath ...

  8. 习题7-1 uva 208(剪枝)

    题意:按最小字典序输出a到b 的所有路径. 思路:先处理出个点到目标点b的情况(是否能到达),搜索即可. 最开始我只判了a能否到b,然后给我的是WA,然后看了半天感觉思路没什么问题,然后把所有点都处理 ...

  9. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

随机推荐

  1. 客户视角:Oracle ETL工具ODI

    客户视角:Oracle ETL工具ODI 数据集成已成为企业在追求市场份额中的关键技术组件,与依靠手工编码的方式不同,越来越多的企业选择完整的数据集成解决方案来支持其IT战略,从大数据分析到云平台的集 ...

  2. .NET 内存管理—CLR的工作

    看了http://www.cnblogs.com/liulun/p/3145351.html  不错,补习下相关技术.. 正文: .NET依托CLR进行的内存的管理 有了CLR 基本不需要担心.net ...

  3. git中手动删除的文件如何在git中删除

    在日常开发中,我们可能或手动删除(delete键删除的)一些文件,然而我们本来应该是用git rm fileName命令删除的,但是现在我们手动删除了,那么要如何在git里面讲那些手动删除的文件删除呢 ...

  4. Save output to a text file from Mac terminal

      Simply with output redirection: system_profiler > file.txt Basically, this will take the output ...

  5. 深入学习android之AlarmManager

    对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,l ...

  6. 函数fsp_get_space_header

    /**********************************************************************//** Gets a pointer to the sp ...

  7. 函数buf_LRU_add_block

    /******************************************************************//** Adds a block to the LRU list ...

  8. AWS 之 S3篇<.NET(c#)批量上传文件>

    第一次知道AWS然后网上就研究了一番,如果也是第一次知道这个的话,或者对这个只知道是干什么,并没有写个相关的程序的话,可以看看这个网址http://docs.aws.amazon.com/zh_cn/ ...

  9. Qt之自定义界面(QMessageBox)

    简述 通过前几节的自定义窗体的学习,我们可以很容易的写出一套属于自己风格的界面框架,通用于各种窗体,比如:QWidget.QDialog.QMainWindow. 大多数窗体的实现都是采用控件堆积来完 ...

  10. ZigZag Conversion1

    问题描述 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows ...