习题7-1 uva 208(剪枝)
题意:按最小字典序输出a到b 的所有路径。
思路:先处理出个点到目标点b的情况(是否能到达),搜索即可。
最开始我只判了a能否到b,然后给我的是WA,然后看了半天感觉思路没什么问题,然后把所有点都处理出来,AC
实在是看不懂- -,好无语。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <algorithm>
typedef long long ll;
using namespace std;
int tmap[200][200];
const int inf = 0x3f3f3f3f;
int ans[200];
int can[200];
int n,a,b;
int tmax;
int vis[200];
int all; void dfs(int cur,int num)
{
if(cur == n)
{
printf("1");
for(int i = 1; i < num; i++)
printf(" %d",ans[i]);
printf("\n");
all++;
return ;
}
for(int i = 1; i <= tmax; i++)
{
if(!vis[i] && tmap[cur][i] && can[i])
{
vis[i] = 1;
ans[num] = i;
dfs(i,num+1);
vis[i] = 0;
}
}
return ;
} void get_can(int cur) //是否能到达终点
{
can[cur] = 1;
for(int i =1 ; i <= tmax; i++)
if(tmap[cur][i] && !can[i])
get_can(i);
} int main()
{
int cas = 1;
while(scanf("%d",&n)!=EOF)
{
memset(vis,0,sizeof(vis));
memset(can,0,sizeof(can));
memset(tmap,0,sizeof(tmap));
while(scanf("%d %d",&a,&b))
{
if(a == 0 && b == 0)
break;
tmap[a][b] = tmap[b][a] = 1;
if(a > tmax)
tmax = a;
if(b > tmax)
tmax = b;
}
get_can(n);
printf("CASE %d:\n",cas++);
if(!can[n])
{
printf("There are 0 routes from the firestation to streetcorner %d.\n",n);
continue;
} vis[1] = 1;
all = 0;
dfs(1,1);
printf("There are %d routes from the firestation to streetcorner %d.\n",all,n);
}
return 0;
}
习题7-1 uva 208(剪枝)的更多相关文章
- UVa 208 消防车(dfs+剪枝)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 208 - Firetruck 回溯+剪枝 数据
题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ...
- Uva 208 - Firetruck
[题目链接]http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&p ...
- UVA 208 (DFS)
题意:找出1到T的所有路径: 坑点:一开始以为是到终点,读错了题意,没测试第二个样例,结果WA了4遍,坑大了: #include <iostream> #include <cmath ...
- UVA - 208 Firetruck(消防车)(并查集+回溯)
题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ...
- UVA - 208 Firetruck(并查集+dfs)
题目: 给出一个结点d和一个无向图中所有的边,按字典序输出这个无向图中所有从1到d的路径. 思路: 1.看到紫书上的提示,如果不预先判断结点1是否能直接到达结点d,上来就直接dfs搜索的话会超时,于是 ...
- UVa 208 Firetruck【回溯】
题意:给出一个n个节点的无向图,以及某个节点k,按照字典序从小到大输出从节点1到节点k的所有路径 看的题解 http://blog.csdn.net/hcbbt/article/details/975 ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
随机推荐
- Hibernate之深入持久化对象
Hibernate是一个彻底的O/R Mapping 框架.之所以说彻底,是因为相对于其他的 框架 ,如Spring JDBC,iBatis 需要手动的管理SQL语句,Hibernate采用了完全 面 ...
- RAID6三块硬盘离线导致的数据丢失恢复过程
小编我最近参与了一例非常成功的数据恢复的案例,在这里分享给大家.用户是一组6块750G磁盘的 RAID6,先后有两块磁盘离线,但维护人员在此情况下依然没有更换磁盘,所以在第三块硬盘离线后raid直接崩 ...
- svn的使用技巧
就是如果想一个文件在提交的时候不被上传,可以设置忽略这样提交的时候就不会被上传
- Python内置函数(31)——object
英文文档: class objectReturn a new featureless object. object is a base for all classes. It has the meth ...
- emqtt 试用(一)安装和测试
一.安装 http://emqtt.io/docs/v2/getstarted.html http://emqtt.io/docs/v2/advanced.html http://emqtt.io/d ...
- win10下安装Ubuntu16.04双系统
其实我是不喜欢系统的,之前都是在win下面进行开发,现在来了个项目,经过各种环境的安装调研,最终选择在Ubuntu下面进行开发.之前想着为啥不在虚拟机里面安装Ubuntu进行操作呢,由于虚拟机的体验不 ...
- SourceTree 03 - 跳过账号登录直接进入主界面
SourceTree系列第1篇 SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/geaosu/p/8807666.html) SourceTree系列 ...
- priority queue优先队列初次使用
题目,排队打印问题 Input Format One line with a positive integer: the number of test cases (at most 20). Then ...
- 28.C++- 单例类模板(详解)
单例类 描述 指在整个系统生命期中,一个类最多只能有一个实例(instance)存在,使得该实例的唯一性(实例是指一个对象指针) , 比如:统计在线人数 在单例类里,又分为了懒汉式和饿汉式,它们的区 ...
- jquery的ajax全局事件详解
jquery在ajax方面是非常强大和方便的,以下是jquery进行ajax请求时方法模板: $.ajax({ type: "get", url: "" ...