uva 208 - Firetruck
来源:互联网 发布:游戏多开软件 编辑:程序博客网 时间:2024/05/20 02:22
这道题没有什么难度,题目已经告诉了,要预先判断能不能够到达,否则会超时,笔者用的是简单的并查集来判断的,当然也可以用终点来一次bfs,判断每个点是否能够到达终点,然后没有什么太大的问题,要注意一个节点不能够走两次,应该是道暴力水题。
#include<bits/stdc++.h>
using namespace std;int CanTo[30], vis[30], CT[30];
int ans;
vector<int> web[30], path;
int findf(int num){
if(CanTo[num] == num)
return num;
else
return findf(CanTo[num]);
}
void add(int a, int b){
CanTo[findf(a)] = findf(b);
}
void dfs(int st, int ed){
// printf("==%d %d==\n", st, ed);
if(st == ed){
for(size_t i = 0; i < path.size(); ++i){
if(i)
printf(" ");
printf("%d", path[i]);
}
printf("\n");
++ans;
return ;
}
for(size_t i = 0; i < web[st].size(); ++i){
if(CT[web[st][i] ] && !vis[web[st][i] ]){
vis[st] = true;
path.push_back(web[st][i]);
dfs(web[st][i], ed);
path.pop_back();
vis[st] = false;
}
}
}
int main(){
int ed;
int cs = 0;
while(~scanf("%d", &ed)){
for(int i = 0; i < 30; ++i)
web[i].clear();
for(int i = 0; i < 30; ++i)
CanTo[i] = i;
printf("CASE %d:\n", ++cs);
int x, y;
ans = 0;
while(~scanf("%d %d", &x, &y) && (x || y)){
add(x, y);
web[x].push_back(y);
web[y].push_back(x);
}
if(findf(1) == findf(ed)){
memset(vis, 0, sizeof(vis));
memset(CT, 0, sizeof(CT));
for(int i = 0; i < 30; ++i)
sort(web[i].begin(), web[i].end());
path.clear();
path.push_back(1);
for(int i = 2; i < 30; ++i)
if(findf(i) == findf(ed))
CT[i] = 1;
dfs(1, ed);
}
printf("There are %d routes from the firestation to streetcorner %d.\n", ans, ed);
}
return 0;
}
0 0
- uva 208 - Firetruck
- uva 208 - Firetruck
- uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 Firetruck
- uva 208 Firetruck
- uva 208 Firetruck
- UVa:208 Firetruck
- UVa 208 - Firetruck
- Uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA - 208 Firetruck
- uva 208 Firetruck
- UVA - 208 Firetruck
- USB开发—自上而下(四)
- 数字 整除 互质 最大公约数 最小公倍数 判断技巧
- leetCode #27 Remove Element
- linux模糊查询文件并删除
- 游戏架构脚本该如何来写
- uva 208 - Firetruck
- Yii2.0手册地址
- FZU 1853 Number Deletion(贪心)
- 《Java实战开发经典》第四章4.7
- 解决linux环境机器 系统时间不对
- wsdl 生成客户端
- 黑马程序员--java技术blog---第四篇:IO流(3)
- 改天记得把自己那个代码中的改成这个boost::lexical_cast
- 汇总一些网络相关的基础概念