【TLE剪枝】UVa208救火车
来源:互联网 发布:语音广播软件 编辑:程序博客网 时间:2024/05/16 18:20
看完大神http://blog.csdn.net/shuangde800/article/details/7750427 的博客才知道TLE的原因:
从1(firestation)出发的路,并不一定能到达火灾处!
应该从1出发,只走能通向火灾处的路。
#include<stdio.h>#include<string.h>int tlroutes;int fire;int gra[25][25];bool connected[25];bool used[25]; //id(i.e. streetcorner) -> already visited or notint queue[10000];int route[25];void dfs(int cur){if(route[cur-1] == fire){tlroutes++;printf("%d",route[0]);for(int i=1; i < cur; i++){printf(" %d",route[i]);}putchar(10);return;}for(int v=1; v < 25; ++v){if(gra[route[cur-1]][v] && connected[v] && !used[v]){used[v] = true;route[cur] = v;dfs(cur+1);used[v] = false;}}}int main(){//int numcase = 1;freopen("input.txt","r",stdin);while(scanf("%d", &fire) == 1){printf("CASE %d:\n",numcase++);memset(gra, 0, sizeof(gra));connected[fire] = true;int u,v;while(scanf("%d%d", &u, &v)==2){if(!u&&!v)break;gra[u][v] = gra[v][u] = 1;}//bfsmemset(connected, false, sizeof(connected));int start = 0, end = 1;queue[start] = fire;connected[fire] = true;while(start < end){for(int g=1; g < 25; ++g){if(gra[queue[start]][g] && !connected[g]){connected[g] = true;queue[end++] = g;}}++start;}//dfsmemset(used, false, sizeof(used));route[0] = 1; // cur == 0used[1] = true;tlroutes = 0;dfs(1);printf("There are %d routes from the firestation to streetcorner %d.\n",\tlroutes, fire);}}
阅读全文
0 0
- 【TLE剪枝】UVa208救火车
- uva208 直接暴力会TLE,需要剪枝
- [回溯&&剪枝]Firetruck UVA208
- <TLE>奇偶剪枝hdoj1010
- uva208 -Firetruck (双向搜索进行剪枝)
- uva208 剪枝 连通块儿的判定
- UVa208
- UVA208
- uva208
- uva208
- UVA208
- UVA208
- uva208
- uva208
- 301UVA地铁运输TLE(剪枝)
- [TLE剪枝]uva165邮票连续值
- TLE
- TLE
- mongodb用户管理2
- Android App签名的那些事
- 拉普拉斯算子进行图像增强
- Java_Day001
- 使用SSH反向隧道进行内网穿透(远程端口转发)
- 【TLE剪枝】UVa208救火车
- 167.n1-详情页的banner图
- Retrofit2 初印象?
- 移动前端不得不了解的html5 head 头标签
- python基础知识(2)
- Java_Day002
- “一带一路”国际合作高峰论坛达成5点共识
- node c++编译环境 node-gyp故障问题
- 面试题集1