HDU 1874 畅通工程续
2013-09-12 18:40
344 查看
转载请注明出处:http://blog.csdn.net/a1dark
分析:一道最短路的水题、用dijkstra水过。。。
分析:一道最短路的水题、用dijkstra水过。。。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define N 250 #define INF 0x7fffffff int mpt ; int dist ; int vis ; int m,n; void dijkstra(int x){ memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) dist[i]=mpt[x][i]; vis[x]=1; dist[x]=0; for(int i=0;i<n-1;i++){ int mink=INF,v; for(int j=0;j<n;j++){ if(vis[j]==0&&dist[j]<mink){ mink=dist[j]; v=j; } } vis[v]=1; for(int j=0;j<n;j++){ if(vis[j]==0&&mpt[v][j]!=INF&&mpt[v][j]+dist[v]<dist[j]) dist[j]=mpt[v][j]+dist[v]; } } } void init(){ for(int i=0;i<N;i++) for(int j=0;j<N;j++) { if(i==j)mpt[i][j]=0; else mpt[i][j]=INF; } } int main(){ while(scanf("%d%d",&n,&m)!=EOF){ init(); int s,e,v; for(int i=1;i<=m;i++){ scanf("%d%d%d",&s,&e,&v); if(v<mpt[s][e]){ mpt[s][e]=v; mpt[e][s]=v; } } int start,end; scanf("%d%d",&start,&end); dijkstra(start); if(dist[end]!=INF) printf("%d\n",dist[end]); else printf("-1\n"); } return 0; }
相关文章推荐
- HDU1874_畅通工程续(Dijkstra最短路)
- 【解题报告】HDU 1874 畅通工程续 -- Dijkstra算法详解 单源点最短路问题
- HDU1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续(最短路径)
- hdu 1874 畅通工程续(最短路Dij邻接表)
- HDU 1874 畅通工程续 最短路
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续 (基础最短路)
- hdu-1874 畅通工程续 最短路径问题
- HDU-1874-畅通工程续(最短路 未队列优化)
- Hdu 1874 畅通工程续
- HDU 1874 畅通工程续【SPFA】
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续 (dijkstra模板)
- HDU 1874-畅通工程续(Floyd)
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续