UVa-208 Firetruck (图的DFS)
UVA-208
天道好轮回。UVA饶过谁。
就是一个图的DFS。
不过这个图的边太多,要事先判一下起点和终点是否联通(我喜欢用并查集),否则会TLE。
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#define maxn 40
using namespace std; int a[maxn][maxn], vis[maxn], ans, f[maxn];
vector<int> q; int build(int x, int y)
{
a[x][y] = ;
a[y][x] = ;
} int found(int x)
{
if (f[x] == x) return x;
f[x] = found(f[x]);
return f[x]; } int add(int x, int y)
{
int fx = found(x), fy = found(y);
if (fx != fy) f[fx] = fy;
} void DFS(int k, int n)
{
if (k == n)
{
for (int i = ; i < q.size()-; i++)
cout << q[i] << " ";
cout << q[q.size()-] << endl;
ans++;
} for (int i = ; i <= maxn / ; i++)
if (!vis[i] && a[k][i])
{
vis[i] = ;
q.push_back(i);
DFS(i, n);
q.pop_back();
vis[i] = ;
}
} int main()
{
int n, cases = ;
while (cin >> n)
{
memset(a, , sizeof(a));
memset(vis, , sizeof(vis));
for (int i = ; i <= maxn/; i++) f[i] = i;
ans = ;
while (!q.empty()) q.pop_back();
int x, y;
while (cin >> x >> y && x && y)
{
build(x, y);
add(x, y);
}
++cases;
printf("CASE %d:\n", cases);
q.push_back();
vis[] = ;
if (found() == found(n)) DFS(, n);
printf("There are %d routes from the firestation to streetcorner %d.\n", ans, n);
} }
#
UVa-208 Firetruck (图的DFS)的更多相关文章
- UVA - 208 Firetruck(并查集+dfs)
题目: 给出一个结点d和一个无向图中所有的边,按字典序输出这个无向图中所有从1到d的路径. 思路: 1.看到紫书上的提示,如果不预先判断结点1是否能直接到达结点d,上来就直接dfs搜索的话会超时,于是 ...
- UVa 208 - Firetruck 回溯+剪枝 数据
题意:构造出一张图,给出一个点,字典序输出所有从1到该点的路径. 裸搜会超时的题目,其实题目的数据特地设计得让图稠密但起点和终点却不相连,所以直接搜索过去会超时. 只要判断下起点和终点能不能相连就行了 ...
- UVa 208 Firetruck【回溯】
题意:给出一个n个节点的无向图,以及某个节点k,按照字典序从小到大输出从节点1到节点k的所有路径 看的题解 http://blog.csdn.net/hcbbt/article/details/975 ...
- Uva 208 - Firetruck
[题目链接]http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&p ...
- UVA - 208 Firetruck(消防车)(并查集+回溯)
题意:输入着火点n,求结点1到结点n的所有路径,按字典序输出,要求结点不能重复经过. 分析:用并查集事先判断结点1是否可以到达结点k,否则会超时.dfs即可. #pragma comment(link ...
- UVA 572 -- Oil Deposits(DFS求连通块+种子填充算法)
UVA 572 -- Oil Deposits(DFS求连通块) 图也有DFS和BFS遍历,由于DFS更好写,所以一般用DFS寻找连通块. 下述代码用一个二重循环来找到当前格子的相邻8个格子,也可用常 ...
- [数据结构]图的DFS和BFS的两种实现方式
深度优先搜索 深度优先搜索,我们以无向图为例. 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似. 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发, ...
- UVA.297 Quadtrees (四分树 DFS)
UVA.297 Quadtrees (四分树 DFS) 题意分析 将一个正方形像素分成4个小的正方形,接着根据字符序列来判断是否继续分成小的正方形表示像素块.字符表示规则是: p表示这个像素块继续分解 ...
- 图的DFS和BFS(邻接表)
用C++实现图的DFS和BFS(邻接表) 概述 图的储存方式有邻接矩阵和邻接表储存两种.由于邻接表的实现需要用到抽象数据结构里的链表,故稍微麻烦一些.C++自带的STL可以方便的实现List,使算 ...
随机推荐
- 2-1~3 MVC
2-1~3 MVC 内容简介 为什么需要mvc? 前端mvc的困难在哪里? AngularJS语境下的mvc是如何实现的? 1. 为什么需要mvc 代码规模越来越大,切分职责是大势所趋. 为了复用:很 ...
- Gym - 101810H ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- python_15(jquery)
第1章 iquery 1.1 官网 1.2 流程图 1.3 Javascripts方法 1.4 书写格式 1.5 jQuery 的两大特 1.6 对比javascript代码量 第2章 入口函数(重要 ...
- Spark Mllib里如何将trainDara训练数据文件里第一行是字段名不是数据给删除掉(图文详解)
不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集
- 88E1111
千兆网phy芯片 支持GMII,RGMII,MII等接口 具备4个GMII时钟模式 支持自适应功能 超低功耗模式 功率降低模式 MDC/MDIO/TWSI接口 支持10Mb/s,100Mb/s,100 ...
- windows下Mongodb和Memcached安装笔记
MongoDB安装: D:\ProgramFiles\MongoDBServer3.2\bin\mongod --dbpath D:\mongoData D:\ProgramFiles\MongoDB ...
- PHP 根据两点的经纬度计算距离
/** * @name 根据经纬度确定两点的距离[地理位置] * @author tbj * @param float $lat 纬度值 * @param float $lng 经度值 * @date ...
- COGS 133. [USACO Mar08] 牛跑步
★★★ 输入文件:cowjog.in 输出文件:cowjog.out 简单对比时间限制:1 s 内存限制:128 MB Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她 ...
- iPhone开发小工具
1.AppIcon: 可以瞬间把图片转换为应用所需要的Icon(Icon-72.png,Icon-72@2x.png,......iTunesArtwork@2x) 2.Resizer: 方便把- ...
- 使用Cordova将您的前端JavaScript应用打包成手机原生应用
假设我用JavaScript和HTML开发了一个前端应用,我想把该应用打包成能直接在手机上安装和运行(不通过浏览器)的原生应用,例如像下面这样.对应用的用户来说,他们得到的用户体验和真正的用Andro ...