hdu1142(最短路+DFS)
来源:互联网 发布:湖南才能网络 编辑:程序博客网 时间:2024/05/21 22:54
题目大意:寻找一共有多少条符合题意的路。能够从点A走到点B的要求是:点A到终点的最短路 > 点B到终点的最短路。 也就是说:从终点出发,求每一个点的最短路,然后那些最短路的值记录起来,作为能否通过的判断条件。最后用记忆化搜索来搜索出一共多少条符合要求的路。普通的dfs是超时的,bfs是超内存的。
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- using namespace std;
- const int inf = 999999999;
- int map[1005][1005];
- int dis[1005],vis[1005];
- int path[1005];
- int n,m;
- void Dijkstra(int src)
- {
- int i,j,minn,pos;
- memset(vis,0,sizeof(vis));
- for(i = 0; i<=n; i++)
- dis[i] = map[src][i];
- dis[src] = 0;
- vis[src] = 1;
- for(i = 1; i<=n; i++)
- {
- minn = inf;
- pos = 0;
- for(j = 1; j<=n; j++)
- {
- if(minn>dis[j] && !vis[j])
- minn = dis[pos = j];
- }
- vis[pos] = 1;
- for(j = 1; j<=n; j++)
- if(dis[j]>dis[pos]+map[pos][j] && !vis[j])
- dis[j] = dis[pos]+map[pos][j];
- }
- }
- int DFS(int src)
- {
- if(path[src] !=-1)
- return path[src];
- if(src == 2)
- return 1;
- path[src] = 0;
- for(int i = 1; i<=n; i++)
- {
- if(dis[i]<dis[src] && map[i][src]!=inf)
- path[src]+=DFS(i);
- }
- return path[src];
- }
- int main()
- {
- int i,j,x,y,z;
- while(~scanf("%d",&n),n)
- {
- scanf("%d",&m);
- for(i = 0; i<=n; i++)
- {
- for(j = 0; j<=n; j++)
- map[i][j] = inf;
- map[i][i] = 0;
- }
- for(i = 0; i<m; i++)
- {
- scanf("%d%d%d",&x,&y,&z);
- map[x][y] = map[y][x] = z;
- }
- Dijkstra(2);
- memset(path,-1,sizeof(path));
- printf("%d\n",DFS(1));
- }
- return 0;
- }
/*******************************
今天早点回去,想吹吹笛子了,最近喜欢看游记,买了瓦尔登湖的中英文版,希望可以坚持看完
阅读全文
0 0
- hdu1142(最短路+DFS)
- hdu1142-A Walk Through the Forest-最短路+dfs
- A Walk Through the Forest(hdu1142,最短路+dfs)
- hdu1142 A Walk Through the Forest 最短路和记忆式搜索dijstra+dfs
- A Walk Through the Forest hdu1142 最短路+简单动规
- 1142 hdu (最短路 + DFS)
- uva1600(最短路 bfs & dfs)
- 1018 最短路 Dijkstra+DFS
- hdu1142
- hdu1142
- hdu1142
- hdu1142
- HDU1142
- hdu 3411 (DFS+最短路)
- poj 1724 最短路变形 DFS+剪枝
- HDU 1242 dFS 找目标最短路
- hdu 1572(dfs+最短路)
- poj 3009 dfs暴力解决最短路
- 又是毕业季II
- java泛型出现原因分析
- 容器对路径的处理、servlet特性
- 路径最优问题
- mysql 修改密码的四个方法
- hdu1142(最短路+DFS)
- 陶陶摘苹果(noi 1.6-02)
- 【SSLGZ 2671】2017年8月8日提高组T2 呀!回文串
- html乱码问题
- 查找两个字符串a,b中的最长公共子串
- Eclipse复制maven web项目
- hide handkerchief 1.2.4
- HDU6095 Rikka with Competition 模拟|签到
- 马农