HDU-2680-Choose the best route【spfa】
来源:互联网 发布:我知女人心迅雷下载 编辑:程序博客网 时间:2024/06/10 07:07
Sample Input
5 8 51 2 21 5 31 3 42 4 72 5 62 3 53 5 14 5 122 34 3 41 2 31 3 42 3 211
Sample Output
1-1
题目分析:输入n个车站,m条路线,t为终点,m行里分别是两个站点及他们之间的距离,输入s,s个可能的出发点。注意是单向边,且两个站点之间可能有多条路线,要选最短的那条。反着看,将终点看作起点。
#include<stdio.h>#include<string.h>#include<queue>#include<iostream>const int inf=999999999;using namespace std;int n,m,s,first[1010],cnt,dis[1010],vis[1010];struct node{int u,v,w,next;}e[20020];void add(int u,int v,int w){e[cnt].u=u;e[cnt].v=v;e[cnt].w=w;e[cnt].next=first[u];first[u]=cnt++;}void spfa(){int i;memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){dis[i]=inf;}dis[s]=0;queue<int>q;q.push(s);vis[s]=1;while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int i=first[u];i!=-1;i=e[i].next){int v=e[i].v;if(dis[v]>dis[u]+e[i].w){dis[v]=dis[u]+e[i].w;if(!vis[v]){vis[v]=1;q.push(v);}}}}}int main(){while(scanf("%d%d%d",&n,&m,&s)!=EOF){int i;memset(first,-1,sizeof(first));cnt=0;for(i=0;i<m;i++){int u,v,w;scanf("%d%d%d",&v,&u,&w);add(u,v,w);}spfa();int ans=inf,num;scanf("%d",&num);while(num--){int x;scanf("%d",&x);if(dis[x]<ans)ans=dis[x];}if(ans==inf)printf("-1\n");elseprintf("%d\n",ans);}return 0;}
#include<iostream>#include<cstring>#include<queue>using namespace std;const int inf=99999999; const int maxx=20001;int n,m,s;int first[maxx],nextt[maxx]; int u[maxx],v[maxx],w[maxx];int dis[maxx],vis[maxx];void spfa(){queue<int> q; memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++){ dis[i]=inf; } dis[s]=0; vis[s]=1; q.push(s); while(!q.empty()){ int cur=q.front(); q.pop(); vis[cur]=0; for(int e=first[cur];e!=-1;e=nextt[e]){ if(dis[v[e]]>dis[cur]+w[e]){ dis[v[e]]=dis[cur]+w[e]; if(vis[v[e]]==0){ q.push(v[e]);vis[v[e]]=1;}} }} }int main(){ while(scanf("%d%d%d",&n,&m,&s)!=EOF){ for(int i=1;i<=n;i++){ first[i]=-1; nextt[i]=-1; } for(int i=1;i<=m;i++){scanf("%d%d%d",&v[i],&u[i],&w[i]);nextt[i]=first[u[i]];first[u[i]]=i;} spfa(); int ans=inf,num;scanf("%d",&num);while(num--){int x;scanf("%d",&x);if(dis[x]<ans)ans=dis[x];}if(ans==inf)printf("-1\n");elseprintf("%d\n",ans); } return 0;}
阅读全文
0 0
- HDU-2680 Choose the best route(SPFA)
- HDU-2680-Choose the best route【spfa】
- HDU 2680Choose the best route (SPFA)
- HDU 2680:Choose the best route【Dijkstra & SPFA】
- hdu 2680 Choose the best route (SPFA算法)
- #HDU 2680 Choose the best route 【SPFA最短路】
- HDU 2680 Choose the best route【多源最短路,Dijkstra+spfa】
- hdu 2680 Choose the best route(spfa/dijkstra)
- hdu 2680 Choose the best route(SPFA或者Dijkstra)
- HDU 2680 Choose the best route
- HDU-2680 choose the best route
- Hdu-2680 Choose the best route
- hdu 2680 Choose the best route
- HDU 2680 Choose the best route
- HDU 2680-Choose the best route
- hdu 2680 Choose the best route
- hdu 2680 Choose the best route
- hdu 2680 Choose the best route
- AMM敏捷成熟度评估框架介绍
- 中兴通讯某分组产品敏捷转型实践
- 丰田生产系统TPS与敏捷实践
- 自由幻想UI之鼠标跟随图标
- 折半查找,把一个数放到一个有序数组的对应位置
- HDU-2680-Choose the best route【spfa】
- 数据结构-中序遍历线索二叉树,堆排序
- Codevs5429 多重背包
- hdu5880 Family View (AC自动机)
- 我赶在国庆人流高峰前回来啦
- 多贝网 --Java后台实习生面试题
- shiro注解权限控制-5个权限注解
- 多线程题目探索
- 算法竞赛学习日记(2)——区间问题