hdu 1874 dijkstra算法
来源:互联网 发布:订票软件哪个好 编辑:程序博客网 时间:2024/04/27 20:19
Problem Description
某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。
现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。
Input
本题目包含多组数据,请处理到文件结束。
每组数据第一行包含两个正整数N和M(0
题解:
注意重边一个路径可能出现多次。判断一下。
代码:
#include <bits/stdc++.h>using namespace std;const int MAXN = 1010;const int INF = 0x3f3f3f3f;bool vis[MAXN];int pre[MAXN];void Dijkstra(int cost[][MAXN],int lowcost[],int n,int beg){ for(int i=0;i<n;i++) { lowcost[i]=INF; vis[i]=false; pre[i]=1; } lowcost[beg]=0; for(int j=0;j<n;j++) { int k = -1; int min=INF; for(int i=0;i<n;i++) { if(!vis[i]&&lowcost[i]<min) { min = lowcost[i]; k=i; } } if(k==-1) break; vis[k]=true; for(int i=0;i<n;i++) { if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]) { lowcost[i]=lowcost[k]+cost[k][i]; pre[i]=k; } } }}int lowcost[MAXN];int cost[MAXN][MAXN];int main(){ int N,M; while(cin>>N>>M) { memset(cost,0x3f,sizeof(cost)); int A,B,X; for(int i=0;i<M;i++) { scanf("%d%d%d",&A,&B,&X); if(X<cost[A][B]) { cost[A][B]=X; cost[B][A]=X; } } int S,T; cin>>S>>T; Dijkstra(cost,lowcost,N,S); if(lowcost[T]==INF) cout<<-1<<endl; else cout<<lowcost[T]<<endl; } return 0;}
阅读全文
0 0
- hdu 1874 Dijkstra算法
- hdu 1874 Dijkstra算法
- hdu 1874 dijkstra算法
- HDU-1874-Dijkstra算法
- hdu 1874 dijkstra算法
- hdu 1874 畅通工程续 (dijkstra算法)
- hdu 1874 畅通工程续 dijkstra算法
- hdu 1874 dijkstra算法初练
- hdu 2066 Dijkstra算法
- hdu 2544 dijkstra算法
- hdu 2544 Dijkstra算法
- hdu 2851 dijkstra算法变形
- hdu 4725(Dijkstra算法)
- hdu 1874 最短路径 dijkstra 和floyd 算法
- 【最短路径dijkstra算法】HDU 1874---畅通工程续
- hdu 1874 畅通工程续 【Dijkstra Floyd-Warshall算法】
- hdu 1874(dijkstra算法求最短路入门题)
- 畅通工程续HDU杭电1874【dijkstra算法 || SPFA】
- Kafka单机、集群模式安装详解(一)
- 微信授权登陆相关链接(.net Core)
- tensorflow笔记:流程,概念和简单代码注释
- 如何解决Ecilpse启动慢
- 解决maven官方库中没有oracle jdbc驱动的问题:Missing artifact com.oracle:ojdbc14:jar:10.2.0.3.0
- hdu 1874 dijkstra算法
- HTTP协议详解(二)
- Jquery $(this)
- 升级或重装Win10之后如何激活Win10的方法分享
- 相对路径
- 头有点大--实验吧(各国语言代码表)
- 判断ie9以下的内核阻止访问内容。
- 【转载】关于typedef的用法总结(重点看一下代码简化)
- Linux系统内核启动代码分析