UVA - 208 Firetruck

题目大意

构造出一张图,给出一个点,让你按字典序输出所有从1到该点的路径

一开始直接DFS超时了
后面看到大佬的优化,大意就是很多起点与终点不相连,需要一开始剪枝舍去,具体操作就反着来,只要判断下起点和终点能不能相连就行了。

算法设计:

先从终点出发,无回溯的走遍和终点相连的所有点并标记为used,然后从起点出发,DFS判断下标记,这样就不会多走很多路了。

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <ctime>
#include <vector>
#include <fstream>
#include <list>
#include <iomanip>
#include <numeric>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pi acos(-1)
const int inf = 0x3f3f3f3f;
const int N=25;
int n,cnt;
int matrix[N][N],rad[N];
bool vis[N*N];
bool used[N*N];
void check(int pos){//无回溯的走遍和终点相连的所有点并标记为usedused[pos]=true;for(int i=2;i<N;i++){if(matrix[i][pos]&&!used[i]){check(i);}}
}
void dfs(int pos,int num){//遍历if(pos==n){cnt++;printf("1");for(int i=1;i<num;i++){printf(" %d",rad[i]);}printf("\n");return;}for(int i=2;i<N;i++){if(matrix[pos][i]==1&&!vis[i]&&used[i]){vis[i]=true;rad[num]=i;dfs(i,num+1);vis[i]=false;}}return;
}
int main()
{int t=1; while(~scanf("%d",&n)){memset(matrix,0,sizeof(matrix));memset(used,false,sizeof(used));cnt=0;int x,y;while(1){scanf("%d%d",&x,&y);if(x==0||y==0){break;}matrix[x][y]=matrix[y][x]=1;}printf("CASE %d:\n",t++);check(n);dfs(1,1);printf("There are %d routes from the firestation to streetcorner %d.\n",cnt,n);}return 0;
}

最后贴一个我参考的博客
UVa 208 - Firetruck 回溯+剪枝 数据

UVA - 208 Firetruck相关推荐

  1. UVa 208 - Firetruck (回溯)

    题意 给出一个无向图和终点的编号 按字典序枚举出从1到终点的路径 思路 要事先判断结点1是否可以到达结点k, 用一个bool judge()函数判断一下从终点能否回到1点即可. 如果无解直接输出有0种 ...

  2. UVa 208 Firetruck【回溯】

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

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

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

  4. Firetruck UVA - 208

    DFS+并查集 如果只用DFS的话会超时,用并查集剪枝,和起点终点不联通的点就不用跑了 这题有好多人写了博客,但是我觉得我的代码写的比较通俗易懂所以就贴上来了,我觉得我写代码的目标就是让任何人都能看懂 ...

  5. UVA 208 划水记录2

    题目:题目描述 中心城市消防部门与运输部门合作,维护反映城市街道现状的城市地图.消防员需要能够选择从火警站到火警的路线. 中心城市分为不重叠的消防区.当报告发生火灾时,中央调度员通知火灾发生地区最近的 ...

  6. UVA 208 救火车

    直接DFS会导致超时TLE http://www.cnblogs.com/staginner/archive/2011/09/07/2170348.html 中写到,如果首先求出与着火点相连的顶点再D ...

  7. linux睿频是自动的吗,Linux限制cpu睿频限制频率

    as3.0 [Embed]标签嵌入外部资源 1.[Embed]嵌入资源 ActionScript代码的顺序非常重要.你必须在声明变量前添加[Embed]元数据标签,而且这个变量的类型会是Class; ...

  8. π-Algorithmist分类题目(2)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(2) Set Theory U ...

  9. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

最新文章

  1. java 路径中文问题_Java 路径问题解决方案汇集
  2. 集成学习——Adaboost分类
  3. 解决vscode安装后无法启动的问题
  4. mpvue开发小程序分享朋友圈无法自定义标题解决方法
  5. 检测Maven依赖中介
  6. 初学大数据之模块集成:Pycharm安装numpy,scipy,sklearn等包时遇到的各种问题的一键解决方法
  7. wsld2java axis_Weblogic+axis2安装
  8. 中国离婚大数据:离婚/结婚比东北三省和四大直辖市霸榜
  9. 用.net core实现反向代理中间件
  10. Resx 文件无效。未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List`1请确保已在项目中添加了必需的引用。
  11. 华为开发者大会2020(Together)精彩集锦
  12. HTML吸引人眼球的网页,这8个神奇的HTML5文字特效让你的网页抓人眼球
  13. Ubuntu关机后自动重启问题的解决方案
  14. win7系统激活时提示0x80072F8F解决办法(亲测有效)
  15. HTTPS 证书认证流程
  16. 管理员必备的20个Linux系统监控工具
  17. 线上支付,出款和收款
  18. 微信拟推付费云存储 八成网友说:不!
  19. java计算机毕业设计家居门户网站MyBatis+系统+LW文档+源码+调试部署
  20. ubuntu16.04 matlab2017b 编译caffe的matlab接口 吐血经历 解决几乎所有make mattest问题

热门文章

  1. pyqt5设置dialog的标题_Python GUI教程(一):在PyQt5中创建第一个GUI图形用户界面...
  2. 【Computer Organization笔记17】大实验讨论:各组数据通路展示
  3. [单刷APUE系列]第四章——文件和目录[1]
  4. OC-NSFileManager
  5. 10个必知的网页设计术语计算机与网络,入学测试计算机与网络应用基础知识题库(公开题)教学文稿(10页)-原创力文档...
  6. 【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)...
  7. 台湾域名总量一周统计:9月第一周新增59个
  8. 项目介绍star原理_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理...
  9. MarteEngine tutorial:Basic collision
  10. x等于5y等于8c语言表达式,《C语言程序设计》复习参考题.doc