[hdu2066] 一个人的旅行
2018-04-10 15:56
465 查看
题目链接
思路:dijkstra,枚举每个出发点和终点
思路:dijkstra,枚举每个出发点和终点
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define INF 0x3f3f3f3f; int m,s,e,x,y,z,n,minl,ans; int go[1200],home[1200],vis[1200],d[1200]; int w[1200][1200]; void Dijkstra(int u)//u为出发点 { for(int i=1;i<=n;i++) { d[i]=INF; vis[i]=0; } d[u]=0; for(int i=1;i<=n;i++) { int x,minl=INF; for(int j=1;j<=n;j++) if(!vis[j]&&d[j]<minl) { x=j; minl=d[j]; } vis[x]=1; for(int j=1;j<=n;j++) d[j]=min(d[j],d[x]+w[x][j]); } } int main() { while(scanf("%d%d%d",&m,&s,&e)!=EOF) { n=0,ans=INF; memset(w,0x3f,sizeof(w)); for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z); n=max(n,max(x,y)); if(z<w[x][y]) w[x][y]=w[y][x]=z; } for(int i=1;i<=s;i++) scanf("%d",&home[i]); for(int i=1;i<=e;i++) scanf("%d",&go[i]); for(int i=1;i<=s;i++) { Dijkstra(home[i]); for(int j=1;j<=e;j++) if(d[go[j]]<ans) ans=d[go[j]]; } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU2066 一个人的旅行
- hdu2066 一个人的旅行(最短路)
- HDU2066:一个人的旅行
- HDU2066一个人的旅行
- HDU2066一个人的旅行---(多起点多终点最短路径)
- HDU2066 一个人的旅行
- HDU2066:一个人的旅行(Dijkstra)
- HDU2066-一个人的旅行-最短路(dijkstra)
- hdu2066 一个人的旅行 最短路
- HDU2066 一个人的旅行(SPFA)
- HDU2066一个人的旅行(dijkstra最短路问题)
- Hdu2066(一个人的旅行)
- 【最短路--思维】hdu2066 一个人的旅行、fzu2261 浪里个浪
- 一个人的旅行 HDU2066
- HDU2066 一个人的旅行(dijsktra)
- HDU2066:一个人的旅行
- HDU2066 一个人的旅行 【Dijkstra】【Floyd】
- hdu2066 一个人的旅行(Dijkstra求最短路)
- 一个人的旅行(HDU2066)
- HDU2066:一个人的旅行(Dijkstra)