HDU 2066 一个人的旅行 spfa
来源:互联网 发布:淘宝客服团队管理 编辑:程序博客网 时间:2024/06/04 23:24
http://acm.hdu.edu.cn/showproblem.php?pid=2066
【思路】
只是去到某个喜欢的城市,那么我们再填个源点,与草儿能直接到的城市建一条边权为0的边,剩下的就是求一次单源最短路了.
#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;const int Mx=1010;const int inf=0x3f3f3f3f;int d[Mx],head[Mx];int cnt,start,S,T,D;bool v[Mx];struct node{ int from,to,v,next;} p[Mx*100];void add(int u,int v,int w){ p[cnt].from= u; p[cnt].to= v; p[cnt].v= w; p[cnt].next= head[u]; head[u]= cnt++;}void spfa(int s){ for(int i=0;i<Mx;i++) d[i]=inf; memset(v,false,sizeof(v)); queue<int> q; d[s]=0;v[s]=true; q.push(s); while (!q.empty()) { int u=q.front(); q.pop(); v[u]=true; for (int i=head[u];i!=-1;i=p[i].next) { int t=p[i].to; if (d[t]>d[u]+p[i].v) { d[t]=d[u]+p[i].v; if (!v[t]) { v[t]=true; q.push(t); } } } v[u]=false; }}int main(){ int x,y,z,ans; while(~scanf("%d%d%d",&S,&T,&D)) { cnt=0; memset(head, -1, sizeof(head)); for (int i=1;i<=S;i++) { scanf("%d%d%d",&x,&y,&z); add(x,y,z); add(y,x,z); } for (int i=1;i<=T;i++) { scanf("%d",&x); add(x,0,0); add(0,x,0); } spfa(0); ans=inf; while (D--) { scanf("%d",&x); ans=min(ans,d[x]); } printf("%d\n",ans); }}
0 0
- HDU 2066 一个人的旅行 dijkstra&&spfa
- hdu 2066 一个人的旅行-spfa
- HDU 2066 一个人的旅行(Spfa)
- HDU 2066 一个人的旅行(spfa)
- spfa hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行 SPFA
- HDU 2066 一个人的旅行 spfa
- HDU 2066 一个人的旅行(spfa,dijkstra)
- HDU 2066(一个人的旅行) SPFA(最短路问题)
- HDU 2066 一个人的旅行(SPFA +Floyd-Warshall算法)
- HDU 2066 一个人的旅行【最短路 dijkstra & floyed & SPFA 】
- 一个人的旅行 HDU杭电2066【dijkstra算法 || SPFA】
- HDU 2066:一个人的旅行【Dijkstra & SPFA & Floyd】
- hdu 2066 一个人的旅行(SPFA算法)
- hdu-2066 一个人的旅行(SPFA做法)
- HDU 2066 一个人的旅行(单源最短路SPFA)
- hdu 2066 一个人的旅行(最短路+SPFA)
- hdu 2066 一个人的旅行 最短路spfa
- Bengio Deep Learning 初探 —— 第1-4章
- HDU 2040 JAVA
- [前言] 实现一个Android电子书阅读APP
- 2017Android通用流行框架大全
- cordova学习目录
- HDU 2066 一个人的旅行 spfa
- C++Primer第五版 第十二章习题答案(31~33)
- Roman to Integer问题及解法
- 图像噪声
- centos7中安装oracle Linux-x86-64 11gR2
- C++的一些输入有关函数
- Java中关于包的知识点详解
- centos离线安装mysql问题记录
- HDU 2041 JAVA