UVA208 消防车 Firetruck
知识点:图的遍历,回溯
这个题其实就是图的遍历然后加上回溯,但是有点坑的是,我们在找路径之前,要先判断1是不是能到k点,否则会超时,这个要不是看提示,还真想不到,因为如果不用别的函数来判断是不是连通的话,用求解的dfs函数,是自带回溯的,如果找不到,那么会比较费时间,会把所有的路径都走一遍,总之做这种图论的题总是会有很多这种考虑不周到,最后导致错误的地方,
这里存图没用邻接矩阵,用的是董晓讲的链式邻接表,因为我们每个节点要从小到大遍历它连着的节点,所有搜索之前对每个点连着的点排序,如果是采用链式前向星的话,我想不到该怎么写程序,就没有使用那种存图方式,
还有一点需要注意的是,题目输出,一个空格就够了,不需要样例里面长度为3的空格
#include <bits/stdc++.h>using namespace std;const int N = 25;int n, k, vis[N], cnt;
vector<int> h[N], chosen;
vector<pair<int, int>> e;void add(int a, int b) {e.push_back(make_pair(a, b));h[a].push_back((int) e.size() - 1);
}bool cmp(int a, int b) {return e[a].second < e[b].second;
}bool bfs() {queue<int> q;q.push(1);int dist[N] = {};dist[1] = 1;while (!q.empty()) {int now = q.front(); q.pop();if (now == k) return true;for (int i = 0; i < (int) h[now].size(); i++) {int ind = h[now][i];int y = e[ind].second;if (dist[y]) continue;q.push(y);dist[y] = 1;}}return false;
}void dfs(int x) {if (x == k) {for (int i = 0; i < (int) chosen.size(); i++) {cout << chosen[i] << (i < (int) chosen.size() - 1 ? " " : "\n");}cnt++;return;}for (int i = 0; i < (int) h[x].size(); i++) {int ind = h[x][i];int y = e[ind].second;if (vis[y]) continue;vis[y] = 1;chosen.push_back(y);dfs(y);chosen.pop_back();vis[y] = 0;}
}int main() {int tt = 1;while (cin >> k) {n = 0; cnt = 0;e.clear();for (int i = 0; i < N; i++) h[i].clear();cout << "CASE " << tt++ << ":\n";int a, b;while (cin >> a >> b && a) {add(a, b);add(b, a);n = max(n, max(a, b));}for (int i = 1; i <= n; i++) {sort(h[i].begin(), h[i].end(), cmp);}if (bfs()) {vis[1] = 1;chosen.push_back(1);dfs(1);vis[1] = 0;chosen.pop_back();}printf("There are %d routes from the firestation to streetcorner %d.\n", cnt, k);}return 0;
}
UVA208 消防车 Firetruck相关推荐
- 消防车Firetruck
题目描述 中心城市消防部门与运输部门合作,维护反映城市街道现状的城市地图.消防员需要能够选择从火警站到火警的路线. 中心城市分为不重叠的消防区.当报告发生火灾时,中央调度员通知火灾发生地区最近的火警站 ...
- AOAPC I: Beginning Algorithm Contests 题解
AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...
- 习题7-1 消防车(Firetruck,ACM/ICPC World Finals 1991, UVa208)
原题链接:https://vjudge.net/problem/UVA-208 备注:回溯法 分类:DFS 代码如下: #include<cstdio> #include<cstri ...
- 7-1 FireTruck 消防车 uva208
题意: 输入一个n <=20 个结点的无向图以及某个结点k 按照字典序从小到大顺序输出从结点1到结点k的所有路径 要求结点不能重复经过 标准回溯法 要实现从小到大字典序 现在数组中排序好即 ...
- 2022-2028年中国消防车行业市场前瞻与投资战略规划分析报告
[报告类型]产业研究 [报告价格]¥4500 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国消防车行业市场行业相关概述.中国中国消防 ...
- 通道设置_烟台240家住宅小区、346家重点单位完成消防车通道标识设置
"有了这样显眼的标识后,消防通道更加清晰可见,提醒大家时刻注意保持消防通道畅通.这样一来,发生火灾消防车能及时通过,我们出行.生活也增添了一份安全保障."消防监督人员在指导小区物业 ...
- ps绿化工具_绿化消防车价位
绿化消防车价位绿化消防车价位 4吨东风消防洒水车,又称为多功能消防车,它是在东风原装二类底盘基础上加消防泵.消防炮.洒水炮及洒水车的前冲后洒.侧喷及水罐体组成,既能参加救火灭火功能,水炮的有效射程≥4 ...
- UVA - 208 Firetruck
UVA - 208 Firetruck 题目大意 构造出一张图,给出一个点,让你按字典序输出所有从1到该点的路径 一开始直接DFS超时了 后面看到大佬的优化,大意就是很多起点与终点不相连,需要一开始剪 ...
- 三轴合并_用两套乐高60107合并成铰接式云梯消防车,看看和60112有什么区别
我们之前通过将乐高城市组 60107 那套云梯消防车改装成一个特技赛车冲过终点线的场景,来演示了积木的套内 MOC. 今天我们就来看看两套 60107 又能做什么. 60107 (2006) 2016 ...
最新文章
- 语义分割--FCN 算法中的一些细节--特征怎么融合
- 深入理解风格迁移三部曲(三)--FUNIT
- C及C++中typedef的简单使用指南
- Ubuntu18.04安装Multiwfn
- java 根据类名示例化类_Java类类的requiredAssertionStatus()方法和示例
- 泰森中国宣布与阿里云达成战略合作
- JVM内存管理:深入垃圾收集器与内存分配策略
- lateral函数oracle,ORACLE LATERAL-SQL-INJECTION 个人见解
- ROS学习笔记九:用C++编写ROS发布与订阅
- ZABBIX 3.2.7 (源码包)安装部署
- 电脑进不了系统怎么重装系统win11
- 小程序web开发框架-weweb介绍 1
- cocostudio学习(UIScrollView控件内部子控件的可视化问题)
- springboot自定义start解析(start中配置从数据源)
- EPP (Enhanced Parallel Port 增强型并口)
- 朱松纯:浅谈人工智能:现状、任务、构架与统一 感悟以及部分内容的概括
- 亚马逊SP-API对接实践
- jenkins集成jmeter
- 名人名言 托尔斯泰 富兰克林 马克思 罗兰 培根
- lnnoDB:Attempted to open a previously opened tablespace. Previous tablespace mysql/innodb_index_stat
热门文章
- linux基本面试题
- 如何利用计算机做备课,如何用电脑进行电子教案的制作
- js 非构造函数的继承 object()方法
- [书目20160623]编程匠艺——编写卓越的代码
- 判断横屏竖屏方式(三种)
- matlab实现子载波分配,一种lte上行链路分步式动态子载波分配方法
- 泰达机器人董事长_3C家电与机器人如何“携手共进”? 听听大咖们怎么说
- 小学一年级古诗《春晓》知识点大全心田花开汇总
- 干货|app自动化测试之模拟器控制
- oracle设置快捷键,打印sf输出select * from