UVa 208 - Firetruck <双向DFS>
来源:互联网 发布:多标签分类算法 编辑:程序博客网 时间:2024/04/28 15:30
这题后台数据一定很坑,估计是那种从节点1可以扩展到节点2~19,但是就是无法与节点20连通的那种,才导致了刚开始没有逆向搜索的时候TLE到3000MS。
逆向DFS找到所有与终点相连的节点保存下来,速度很快的。这样正向搜索时就要把与终点不相连的节点剪枝。
判断连通性的方法有很多,其实本题还可以用BFS或者并查集防止超时。
#include <iostream>#include <cstdio>#include <vector>#include <algorithm>#include <cstring>#include <cstdlib>using namespace std;int n, kase, cnt, vis[22], road[22][22];int join[22];vector<int> res;void find_join(int u){join[u] = 1;for(int v = 1; v <= 20; ++v)if (!join[v] && road[u][v])find_join(v);}void DFS(int u){if (u == n){++cnt;for (unsigned i = 0; i != res.size(); ++i)printf("%d%c", res[i], i==res.size()-1 ? '\n' : ' ');return;}for (int v = 1; v <= 20; ++v){if (!vis[v] && road[u][v] && join[v]){vis[v] = 1; res.push_back(v);DFS(v);vis[v] = 0; res.pop_back();}}}void init(){cnt = 0;memset(road, 0, sizeof(road));memset(vis, 0, sizeof(vis));memset(join, 0, sizeof(join));vis[1] = 1;res.clear(); res.push_back(1);}int main(){while (init(), cin >> n){int x, y;while (cin >> x >> y, x || y)road[x][y] = road[y][x] = 1;printf("CASE %d:\n", ++kase);find_join(n); DFS(1);printf("There are %d routes from the firestation to streetcorner %d.\n", cnt, n);}return 0;}
0 0
- UVa 208 - Firetruck <双向DFS>
- UVA 208 FireTruck DFS
- UVA 208 Firetruck(DFS)
- UVa 208 Firetruck / dfs + floyd
- UVa 208:Firetruck(DFS)
- uva 208 -Firetruck(dfs)
- UVa 208 - Firetruck,双向搜索进行剪枝
- [UVA 208] Firetruck (双向搜索)
- 双向搜索(UVA 208 Firetruck)
- UVA 208 Firetruck DFS 并查集
- UVA Firetruck (DFS)
- uva 208 Firetruck (DFS + 并查集)
- UVA 208 - Firetruck DFS 并查集剪枝
- UVa 208 - Firetruck(DFS判连通+回溯)
- Uva 208 Firetruck(dfs并查集优化)
- uva 208 - Firetruck
- uva 208 - Firetruck
- uva 208 - Firetruck
- NoSQL/MongoDB安装
- hello,PHP
- ACM——01——1004: 【入门】输入一个三位数,把个位和百位对调后输出 【运算符】
- 数据结构之插入排序与希尔排序
- centos Usage: gij [OPTION] ... CLASS [ARGS] ...
- UVa 208 - Firetruck <双向DFS>
- CSS布局模型(二)——浮动模型
- windows下面编译使用libcurl
- fatal error C1853: 'Debug\***.pch' precompiled header file is from a previous version of the compil
- 数据类型自动装箱与拆箱
- POJ 2528 Mayor's posters 区间离散化线段树
- hdu4009 SBT模板
- hadoop完全分布式集群安装
- TSP问题源代码实现