uva 208 Firetruck
来源:互联网 发布:视频上课软件 编辑:程序博客网 时间:2024/05/17 23:34
注意可能有很多点,但是只有一条路与终点相通。不剪枝一定超时,所以先从终点开始
进行一次搜索,将相连的点标记一下。
#include "stdio.h"#include "string.h"int ans,sum,vis[25][25],cnt,v[25],c[25],ok[25];void pdfs(int st)//从后面开始搜索,标记所以可能的点{ int i; for(i=0;i<25;i++) if(vis[st][i]&&!ok[i]) { ok[i]=1; pdfs(i); }}void dfs(int st,int t){ int i; if(st==ans) { cnt++; for(i=1; i<t; i++) printf("%d ",v[i]); printf("%d\n",ans); return; } for(i=1; i<22; i++) { if(vis[st][i]&&!c[i]&&ok[i]) { c[i]=1; vis[st][i]= vis[i][st]=0; v[t]=st; dfs(i,t+1); vis[st][i]= vis[i][st]=1; c[i]=0; } }}int main(){ int a,b,cas=0; while(~scanf("%d",&ans)) { memset(vis,0,sizeof(vis)); memset(c,0,sizeof(c)); memset(ok,0,sizeof(ok)); while(scanf("%d%d",&a,&b)) { if(a==0&&b==0) break; vis[b][a]= vis[a][b]=1; } printf("CASE %d:\n",++cas); cnt=0; pdfs(ans); c[1]=1; dfs(1,1); printf("There are %d routes from the firestation to streetcorner %d.\n",cnt,ans); } 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
- 百度首席科学家吴恩达:人工智能
- xcodebuild批量打包之区分不同的渠道
- python学习系列(八) --- socket实现简单的即时通讯
- struts2中对Action类中的方法进行校验
- 如何估算普通LED灯珠的额定电压和功率
- uva 208 Firetruck
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 一款不错的python操作数据库的库SQLObject
- 低血糖不仅是心慌出汗
- Linux学习笔记
- h5viewport使用
- Labyrinth(深度搜索)
- 基于Selenium的UI自动化测试屏幕截图功能实践
- Karrigell ---python web 框架介绍