UVA 208 (DFS)
题意:找出1到T的所有路径;
坑点:一开始以为是到终点,读错了题意,没测试第二个样例,结果WA了4遍,坑大了;
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <sstream>
#include <algorithm>
#define Max 2147483647
#define INF 0x7fffffff
#define N 90000+2
#define M 40000
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
#define repu(i, a, b) for(int i = (a); i < (b); i++)
#define repd(i, a, b) for(int i = (a-1); i >= (b); i--)
const double PI=-acos(-1.0);
using namespace std;
const int maxn = ;
int t = , v, sum, T;
int rec[],vis[];
int g[][] ,floyd[][];
void dfs(int x,int n)
{
if(x==T)///到终点输出
{
printf("%d" ,);
repu(i,,n-)
printf(" %d",rec[i]);
printf(" %d\n",T);
sum++;
return ;
}
repu(i,,v+)
{
if(!vis[i]&&g[x][i]==&&floyd[T][i]!=maxn)
{///i点能到达终点+x,i通路+未访问过
rec[n]=i;
vis[i]=;
dfs(i,n+);
vis[i]=;
}
}
}
int main()
{
int x, y, cas = ;
while (~scanf("%d", &T))
{
v = ;
repu(i,,)
repu(j,,)
g[i][j] = floyd[i][j] = maxn;
while(scanf("%d%d", &x, &y) && (x || y))
{
g[x][y] = g[y][x] = ;///无向图
floyd[x][y] = floyd[y][x] = ;
v = max(v,max(x,y));///找最大点
}
for(int k = ; k <= v; k++)///弗洛伊德算法找最短路,判断两点之间是否是通路
for (int i = ; i <= v; i++)
for (int j = ; j <= v; j++)
floyd[i][j] = min(floyd[i][j],floyd[i][k] + floyd[k][j]);
vis[] = ;
sum = ;
printf("CASE %d:\n", cas++);
dfs(, );///从第一组数找起
printf("There are %d routes from the firestation to streetcorner %d.\n", sum, T);
}
return ;
}
DFS
UVA 208 (DFS)的更多相关文章
- UVa 208 消防车(dfs+剪枝)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA - 208 Firetruck(并查集+dfs)
题目: 给出一个结点d和一个无向图中所有的边,按字典序输出这个无向图中所有从1到d的路径. 思路: 1.看到紫书上的提示,如果不预先判断结点1是否能直接到达结点d,上来就直接dfs搜索的话会超时,于是 ...
- UVA 572 (dfs)
题意:找出一块地有多少油田.'@'表示油田.找到一块就全部标记. #include<cstdio> #define maxn 110 char s[maxn][maxn]; int n,m ...
- UVA 11853 [dfs乱搞]
/* 大连热身E题 不要低头,不要放弃,不要气馁,不要慌张 题意: 在1000×1000的格子内有很多个炮弹中心,半径给定. 为某人能否从西部边界出发,从东部边界走出. 不能输出不能,能的话输出最北边 ...
- UVA 11181 dfs 概率
N friends go to the local super market together. The probability of their buying something from them ...
- UVa 11210 (DFS) Chinese Mahjong
大白书第一章的例题,当时看起来很吃力,现如今A这道题的话怎么写都无所谓了. 思路很简单,就是枚举胡哪张牌,然后枚举一下将牌,剩下如果能找到4个顺子或者刻子就胡了. 由于粗心,34个字符串初始化写错,各 ...
- Uva 208 - Firetruck
[题目链接]http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&p ...
- UVa 208 - Firetruck 回溯+剪枝 数据
题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ...
- UVA - 208 Firetruck(消防车)(并查集+回溯)
题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ...
随机推荐
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...
- Flowplayer-Setup
SOURCE URL: https://flowplayer.org/docs/setup.html 1. DOCTYPE At the top of your page declare the HT ...
- SQL基础语法笔记教程整理
PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...
- MySQL修改表一次添加多个列(字段)和索引
MySQL修改表一次添加多个列(字段) ALTER TABLE table_name ADD func varchar(50), ADD gene varchar(50), ADD genedetai ...
- consul的安装配置 一centos7环境
centos7上consul的安装--新手笔记 环境 我用的是centos7, 用的是vmware 一 安装系统后首先要设置ip ifconfig eth0 →查看IP 不过输出的信息多一些 ifco ...
- 初识onselectstart
onselectstart几乎可以用于所有对象,其触发时间为目标对象被开始选中时(即选中动作刚开始,尚未实质性被选中). 实例: 在做拖拽效果的时候,为了防止js选中页面上的其他元素,onselect ...
- postgis数据库文件shapefile导入 dbf file (.dbf) can not be opened.shapefile import failed.
Destination: public.train_polylineSource File: C:\Documents and Settings\Administrator\桌面\ffffff\tra ...
- web过滤器中获取请求的参数(content-type:multipart/form-data)
1.前言: 1.1 在使用springMVC中,需要在过滤器中获取请求中的参数token,根据token判断请求是否合法: 1.2 通过requst.getParameter(key)方法获得参数值; ...
- Ubuntu14.04安装redis和简单配置
1.前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:做为时时监控信号处理也非常不错. ...
- c++虚函数的作用是什么?
<深入浅出MFC>中形容虚函数是执行一般化操作,一直没有领悟要点.现在的体悟是抽象,先前考虑问题都是由抽象到具象,比如下文中的示例,由上(虚基类的「怪物」)至下(派生类的三个子类「狼」「蜘 ...