UVA 208 - Firetruck
来源:互联网 发布:windows grub 修复 编辑:程序博客网 时间:2024/04/29 15:31
题目大意:给你一个目的地,和 一些路。求起点能到达目的地的所有线路,每个结点只能经过一次
解题思路:要先检查哪些结点是不可能到达目的地的,先排除这些点,然后回溯查找所有可行的线路
#include <cstdio>#include <cstring>int edge[25][25], node[25] = {0}, road[25], valid[25], num, count;void check(int move) { valid[move] = 1;for(int i = 2; i <= 25; ++i)if(edge[move][i] && !valid[i])check(i);}void dfs(int move, int sum) {road[sum] = move;if (move == num) {for (int i = 0; i <= sum; i++)printf(i == sum ? "%d\n" : "%d ", road[i]);count++;return ;}for (int i = 2; i < 25; i++)if (edge[move][i] && !node[i] && valid[i]) { //下一个点必须是可以连接到目的地的且未走过node[i] = 1;dfs(i, sum + 1);node[i] = 0;}}int main() {int a, b, t = 0;while (scanf("%d", &num) != EOF) {memset(edge, 0, sizeof(edge));memset(valid, 0, sizeof(valid));while (scanf("%d%d", &a, &b), a)edge[a][b] = edge[b][a] = 1;count = 0;check(num); //排除掉不可能到达目的的点,不然会超时printf("CASE %d:\n", ++t);dfs(1, 0);printf("There are %d routes from the firestation to streetcorner %d.\n", count, num);}return 0;}
0 0
- uva 208 - Firetruck
- uva 208 - Firetruck
- uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 Firetruck
- uva 208 Firetruck
- uva 208 Firetruck
- UVa:208 Firetruck
- UVa 208 - Firetruck
- Uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA - 208 Firetruck
- uva 208 Firetruck
- UVA - 208 Firetruck
- HDOJ 题目1874 畅通工程续(简单最短路径)
- Android应用插件式开发
- 基础sql语句练习
- Tomcat集群Spring+Quartz多次执行解决方案记录
- 安装Chrome driver/ IE driver
- UVA 208 - Firetruck
- 关于C语言中字符串常量的问题
- iOS 在scrollview加入 由自己定义的controller 生成的view
- Javascript 中的false、0、null、undefined和空字符串对象
- 【后知后觉】AJAX核心对象——XMLHttpRequest
- 程序常用理论知识,不记编号,持续更新中。。。
- android手机获取IP地址
- Linux程序设计学习笔记----多线程编程之线程同步条件变量
- RAID10与RAID01比较,RAID10与RAID5比较