HDU 1874 Dijkstra模板
来源:互联网 发布:穿越火线手游mac版 编辑:程序博客网 时间:2024/05/09 04:27
迪杰斯特拉是用于最短路径搜索的算法,求出的是一个节点到其他所有节点的最短路径,跟普利姆算法很相似。
#include<stdio.h>#include<string.h>#define inf 1<<28using namespace std;int mp[250][250];int dis[250];bool vis[250];void djs(int n,int s,int t){ int i,j; memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) { dis[i]=mp[s][i]; } vis[s]=1; int k=s,mini; for(i=0;i<n-1;i++) { for(j=0;j<n;j++) { //更新dis数组 if(!vis[j]&&dis[k]+mp[k][j]<dis[j]) dis[j]=dis[k]+mp[k][j]; } //找最小值 mini=inf; for(j=0;j<n;j++) { if(!vis[j]&&dis[j]<mini) mini=dis[k=j]; } vis[k]=1; } if(dis[t]==inf) //若未连通 printf("-1\n"); else printf("%d\n",dis[t]);}int main(){ int m,n,i,j; int a,b,c; while(~scanf("%d%d",&n,&m)) { //初始化 for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) mp[i][j]=0; else mp[i][j]=inf; } } for(i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); if(mp[a][b]>c) //路径可能有多条,选最短 { mp[a][b]=c; mp[b][a]=c; } } int s,t; scanf("%d%d",&s,&t); djs(n,s,t); }return 0;}
0 0
- HDU 1874 Dijkstra模板
- HDU-1874 畅通工程续 【dijkstra模板】
- HDU-1874 畅通工程续 【dijkstra模板】
- HDU 1874 畅通工程续 (dijkstra模板)
- HDU 2544 dijkstra模板题
- HDU 1874 畅通工程续 <Dijkstra模板题>
- HDU 2544最短路dijkstra模板题
- hdu 2544 最短路(Dijkstra模板)
- hdu 1874 Dijkstra算法
- hdu 1874 Dijkstra算法
- hdu 1874 dijkstra算法
- Dijkstra hdu 1874
- HDU-1874-Dijkstra算法
- hdu 1874 dijkstra算法
- Dijkstra HDU 1874
- dijkstra 模板
- dijkstra 模板
- Dijkstra模板
- 信号量函数(semget、semop、semctl)
- vs2005 远程调试方法
- 最高检严查减刑假释 建议将711名罪犯收监执行
- C/C++ sort函数的用法
- java程序员在面试时要注意的几个问题
- HDU 1874 Dijkstra模板
- 皮肤干燥起皮怎么办?七个妙招还原水润肌
- 状态压缩动态规划
- 文件同步(一) lsyncd
- 乌政府军宣布在东部地区俘虏10名俄精锐伞兵
- 如何监测到打电话的状态
- wpf 设置控件 旋转,缩放 效果
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式 .
- 《企业应用架构模式》之事务脚本、表模块、领域模型