uva208
一道简单的路径打印,首先需要一次dfs判断能否从1到达目标点,否则可能会超时。还有一点就是那个格式需要注意下,每条路径前没有空格(看起来好像有3个空格)….
AC代码:
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=21+5;
int vis[maxn];
vector<int>G[maxn];
int cnt=0,goal;
void reach(int u){ //能否到达目标节点
vis[u]=1;
int len=G[u].size();
for(int i=0;i<len;++i){
if(G[u][i]==goal) {vis[goal]=1;return;}
if(!vis[G[u][i]]) reach(G[u][i]);
}
}
void dfs(int *a,int cur,int u){
if(u==goal){
cnt++;
//printf(" ");
for(int i=0;i<cur;++i){
if(i==0) printf("%d",a[i]);
else printf(" %d",a[i]);
}
printf("\n");
return;
}
int len=G[u].size();
for(int i=0;i<len;++i){
if(!vis[G[u][i]]){
vis[G[u][i]]=1;
a[cur]=G[u][i];
dfs(a,cur+1,G[u][i]);
vis[G[u][i]]=0;
}
}
}
void solve(){
memset(vis,0,sizeof(vis));
reach(1);
if(!vis[goal]) return; //从1无法到达目标节点
memset(vis,0,sizeof(vis));
for(int i=1;i<maxn;++i){
sort(G[i].begin(),G[i].end()); //排序的目的是方便按字典序输出
}
int a[maxn];
a[0]=1; //1作为起点
vis[1]=1;
dfs(a,1,1);
}
int main(){
int kase=0;
while(scanf("%d",&goal)==1){
cnt=0;
int x,y;
while(scanf("%d%d",&x,&y)==2&&x){
G[x].push_back(y);
G[y].push_back(x);
}
printf("CASE %d:\n",++kase);
solve();
printf("There are %d routes from the firestation to streetcorner %d.\n",cnt,goal);
for(int i=0;i<maxn;++i) G[i].clear();
}
return 0;
}
如有不当之处欢迎指出!
uva208的更多相关文章
- UVa-208 Firetruck (图的DFS)
UVA-208 天道好轮回.UVA饶过谁. 就是一个图的DFS. 不过这个图的边太多,要事先判一下起点和终点是否联通(我喜欢用并查集),否则会TLE. #include <iostream> ...
- uva208 - Firetruck
Firetruck The Center City fire department collaborates with the transportation department to maintai ...
- UVA-208 Firetruck (回溯)
题目大意:给一张无向图,节点编号从1到n(n<=20),按字典序输出所有从1到n的路径. 题目分析:先判断从1是否能到n,然后再回溯. 注意:这道题有坑,按样例输出会PE. 代码如下: # in ...
- 7-1 FireTruck 消防车 uva208
题意: 输入一个n <=20 个结点的无向图以及某个结点k 按照字典序从小到大顺序输出从结点1到结点k的所有路径 要求结点不能重复经过 标准回溯法 要实现从小到大字典序 现在数组中排序好即 ...
- UVA208 Firetruck 消防车(并查集,dfs)
要输出所有路径,又要字典序,dfs最适合了,用并查集判断1和目的地是否连通即可 #include<bits/stdc++.h> using namespace std; ; int p[m ...
- 【习题 7-1 UVA-208】Firetruck
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 预处理一下终点能到达哪些点. 暴力就好. 输出结果的时候,数字之间一个空格.. [代码] /* 1.Shoud it use lon ...
随机推荐
- ECLIPS-S测井系统下的仪器挂接 [TCC模块]
1. 环境 HPUX版本:11.23 Complete Image ECLIPS版本:Rel 5.1i 2. 效果图 3. 用途 为以后在此系统中挂接新仪器打下坚实的基础. 4. 参考资料 ECLIP ...
- JavaScript之点赞特效
在很多网站中登录后可以对你说喜欢的文章.图片之类的进行点赞,这个功能效果的实现就是我今天要写的东西.代码不长,但觉得还是很有用的,为 js 给用户交互体验上更加友好.在实现过程中,主要的思路有: 点赞 ...
- Linux指令--rm, rmdir
rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变.rm是一个危险的命令,使用的时 ...
- Execption:the database returned no natively generated identity value
org.hibernate.HibernateException: The database returned no natively generated identity value at org. ...
- restful 风格的理解
rest 其实就是representation status transfer(表现层状态转换) restful 风格的API具有如下特征: 1. 每个URI 包含一种资源,而且URI ...
- SEO—Meta标签优化
Meta标签之一"标题": 标题是网站中很重要的一个标签,他在搜索引擎中是直接显示出来的,一般情况下要网站的核心关键词和网站名称都写进去,这样更有利于网站的排名.但是要注意标题的长 ...
- C# 值类型,引用类型区别
值类型/引用类型 作为所有类型的基类,System.Object提供了一组方法,这些方法在所有类型中都能找到,其中包含toString方法及clone等方法. 引用类型和值类型都继承自System.O ...
- struts2--实现自定义拦截器
前言: 本篇文章,我想说清实现拦截器的办法,还有为什么要这样做: 目录: 1.需求目的 2.实现步骤及原理(文字怕描述不清,画图描述) 3.代码 4.总结 一.需求目的 规范或限制越级访问(例如:一个 ...
- c# HTTP技术
种植头发能完全成活吗?头发上出现了掉落,头发变细等情况下是需要去看看是不是皮下的毛囊出了问题,要解决这个头发脱发上,选择植发的方式能有效改善,不过也不要小看这个头发脱发,脱发后如果不加以做好毛发护理, ...
- centos 6.5静态网址简单配置
详细配置参数参考如下: DEVICE=eth0HWADDR=08:00:27:F1:72:C9TYPE=EthernetUUID=dab98425-fa46-4a5b-8f47-cf846d4acb3 ...