HDU-1142 最短路(spfa)
来源:互联网 发布:京东秒杀软件安卓版 编辑:程序博客网 时间:2024/05/01 08:13
题目连接
题意:
办公室(起点)的编号为1,家(目的地)编号为2。给你一些编号之间的距离。问你,若当前所在的位置A,与B(必须是连通的)所能到达目的地的最短路径远些,那么就可从A走到B,那么满足这样的条件,有多少条路径。
分析:
根据题意,要判断能否可以走,必须知道当前点到目的地的最短距离,那么,我们只要从目的地出发,搜索最短路就可以了。(最好不要用dijkstra).
然后,在进行记忆搜索就行了。
我用了两种方法。用dijkstra超时了。还是spfa过了。
#include<cstdio>#include<queue>#define INF 1000000000using namespace std;const int N=1005;int vis[N],map[N][N],dis[N],e[N];int n;/*void dijsktra(int p){for(int i=1;i<=n;i++){dis[i]=map[p][i];vis[i]=0;}dis[p]=0,vis[p]=1;for(int i=1;i<n;i++){int k=p;int d=INF;for(int j=1;j<=n;j++){if(!vis[j]&&dis[j]<d){k=j;d=dis[j];}vis[k]=1;for(int j=1;j<=n;j++)if(!vis[j]&&map[k][j]<INF&&map[k][j]+dis[k]<dis[j]){dis[j]=map[k][j]+dis[k];}}}}*/void spfa(int p){queue<int>Q;for(int i=1;i<=n;i++){dis[i]=INF;vis[i]=0;}dis[p]=0,vis[p]=1;Q.push(p);while(!Q.empty()){int v=Q.front();Q.pop();vis[v]=0;for(int i=1;i<=n;i++){if(map[v][i]+dis[v]<dis[i]){dis[i]=map[v][i]+dis[v];if(!vis[i]){vis[i]=1; Q.push(i);}}}}}int DFS(int p){if(e[p]) return e[p];if(p==2) return 1;int ans=0;for(int i=1;i<=n;i++){if(map[p][i]<INF&&dis[p]>dis[i]) if(e[i]) ans+=e[i]; else ans+=DFS(i);}e[p]=ans;return e[p];}int main(){int i,j,x,y,m,k;while(scanf("%d",&n),n){scanf("%d",&m);for(i=1;i<=n;i++) for(j=1;j<=n;j++){ map[i][j]=INF;e[i]=0; }for(i=0;i<m;i++){scanf("%d %d %d",&x,&y,&k);map[x][y]=map[y][x]=k;} //dijsktra(2); spfa(2);printf("%d\n",DFS(1));}return 0;}
- HDU-1142 最短路(spfa)
- hdu 2544 最短路(最短路spfa)
- hdu-2112 最短路 SPFA
- HDU-3790 最短路 SPFA
- HDU-1224 最短路 SPFA
- hdu 4318 SPFA 最短路
- hdu 2544 最短路(spfa)
- Spfa 最短路 HDU 2544
- hdu 2544 最短路-spfa
- hdu 2544 最短路 spfa
- HDU 2544 最短路 (SPFA)
- HDU 2544 最短路【SPFA】
- HDU 2544 最短路 SPFA
- hdu 1217 最短路,spfa
- HDU 2544-最短路(最短路spfa)
- HDU 2544 最短路(最短路/spfa)
- hdu 2544 最短路 (dijkstra/floyd/spfa)
- hdu 3790 最短路spfa模板
- android读写Sdcard
- Activity/Fragment/TabActivity/ActivityGroup bindSrvice绑定服务无效
- hdu 3715 (2-SAT+二分)
- 实践手记——调用人人新版API2 SDK在android平台上发布新鲜事及上传照片
- sring 与StringBuilder的区别
- HDU-1142 最短路(spfa)
- 关于多线程
- 大数据应用电子商务之精准推广
- navicat执行sql文件时,中文乱码的处理
- rhel-server-5.4设置nfs服务器以及错误纠正
- C++ 之高效使用STL(查找算法的选择)
- hdu 1394 Minimum Inversion Number 线段树求逆序数
- POVIT行转列
- 【android开发】android中的Message类简单介绍