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 ...
随机推荐
- scrapy_随机user-agent
什么是user-agent? 用户代理,服务器识别用户的操作系统,浏览器类型和渲染引擎,不同浏览器的user-agent是不同的 如何随机更改user-agent? 1. 在setting中添加use ...
- python_如何对迭代器进行切片操作
案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...
- JavaScript小结
语法小结 /** * Created by M.C on 2017/5/26. */ /*弹框*/ //var message = "Hello world"; //alert(m ...
- js禁止滚动条移动
js禁止滚动条移动 var scrollFunc=function(e){ e=e||window.event; if (e&&e.preventDefault){ e.prevent ...
- ng机器学习视频笔记(十六) ——从图像处理谈机器学习项目流程
ng机器学习视频笔记(十六) --从图像处理谈机器学习项目流程 (转载请附上本文链接--linhxx) 一.概述 这里简单讨论图像处理的机器学习过程,主要讨论的是机器学习的项目流程.采用的业务示例是O ...
- Sql Server的艺术(三) SQL聚合函数的应用
SQL提供的聚合函数有求和,最大值,最小值,平均值,计数函数等. 聚合函数及其功能: 函数名称 函数功能 SUM() 返回选取结果集中所有值的总和 MAX() 返回选取结果集中所有值的最大值 MIN( ...
- jQuery选择器概述
1.基本选择器:1) #id : 根据给定的id匹配一个元素:2) .class: 根据给定的类名匹配元素:3)element: 根据给定的元素名匹配元素:4)* : 匹配所有元素:5)selecto ...
- 免费分享Navicat12各版本破解(仅供学习使用)
花了几个小时终于找到比较"绿色"的安装包了...(无力吐槽下现在网上好多挂羊头卖狗肉的网站) https://pan.baidu.com/s/1geMIkfT 密码:9a98 里面 ...
- xBIM 格式之间转换
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- BZOJ 2743: [HEOI2012]采花 [树状数组 | 主席树]
题意: 查询区间中出现次数$>2$的颜色个数 一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做 ...