uva 208 Firetruck
来源:互联网 发布:爱奇艺网络大电影票房 编辑:程序博客网 时间:2024/06/03 17:17
题目:Firetruck
思路:
先从终点开始遍历一次全图,找出和它连通的点。再从起点开始dfs,这是只能走标记过的那些和终点连通的点。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<map>#include<algorithm>#include<sstream>#include<queue>#include<set>using namespace std;#define maxn 21bool mp[maxn+5][maxn+5];int goal;bool use[maxn+5]={0};int cnt;bool c[maxn+5]={0};void cut(int x){c[x]=true;for(int i=1;i<maxn;i++){if(mp[x][i]&&!c[i]) cut(i);}}bool init(){cnt=0;memset(use,0,sizeof(use));memset(mp,0,sizeof(mp));memset(c,0,sizeof(c));if(scanf("%d",&goal)!=1) return false;int x,y;while(scanf("%d%d",&x,&y)==2&&x!=0&&y!=0){mp[x][y]=mp[y][x]=true;}return true;}void dfs(int x,vector<int> a){if(x==goal){for(int i=0;i<a.size();i++){printf("%d ",a[i]);}printf("%d\n",goal);cnt++;return ;}a.push_back(x);use[x]=true;for(int i=1;i<maxn;i++){if(mp[x][i]&&!use[i]&&c[i]){dfs(i,a);}}use[x]=false;return ;}int main() {int T=0;while(init()){printf("CASE %d:\n",++T);cut(goal);vector<int> x;dfs(1,x);printf("There are %d routes from the firestation to streetcorner %d.\n",cnt,goal);}return 0;}
阅读全文
2 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
- Example
- 第十节异常及折半查找
- Friend Circles
- 《》数字图像处理》学习笔记1--灰度变换基本概念
- Java基础编程小练习——日期天数的计算
- uva 208 Firetruck
- 信号完整性分析方法-1-传输线
- 昨天的问题的解决方案
- spring boot 加载资源路径配置和classpath问题
- Java中this和super的用法总结
- QT实现伸缩窗口
- HDU
- 归并排序-优化
- 虚拟机内存管理—深入理解Java虚拟机(三)