hdu 2544 最短路(Dijkstra模板)
2016-07-25 15:26
337 查看
#include <set> #include <map> #include <queue> #include <deque> #include <cmath> #include <vector> #include <string> #include <cstdio> #include <cstdlib> #include <cstring> #include <cassert> #include <iostream> #include <algorithm> using namespace std; #define L(i) i<<1 #define R(i) i<<1|1 #define INF 0x3f3f3f3f #define pi acos(-1.0) #define eps 1e-9 #define maxn 1000010 #define MOD 1000000007 #define zero(x) (((x)>0?(x):-(x))<eps) int mp[110][110],dis[110]; int n,m,vis[110]; void Dijkstra(int x) { memset(vis,0,sizeof(vis)); for(int i = 1; i <= n; i++) dis[i] = mp[x][i]; vis[x] = 1; for (int i = 1; i<= n; i++) { int p; int Min = INF; for(int j = 1; j <= n; j++) { if(!vis[j] && dis[j] < Min) { p = j; Min = dis[j]; } } vis[p] = 1; for(int j = 1; j <= n; j++) if(!vis[j] && dis[p] + mp[p][j] < dis[j]) dis[j] = dis[p] + mp[p][j]; } } int main() { while(scanf("%d%d",&n,&m) && (n+m)) { memset(mp,INF,sizeof(mp)); for(int i = 1; i <= m; i++) { int a,b,t; scanf("%d%d%d",&a,&b,&t); mp[a][b] = t; mp[b][a] = t; } Dijkstra(1); printf("%d\n",dis ); } return 0; }
相关文章推荐
- sql server 2000收缩数据库【极简操作】
- 数据结构 在单链表和双链表中删除倒数第K个节点
- HDU 1394 Minimum Inversion Number (线段树)
- linux驱动相关知识整理
- PaperWriting——LaTeX编辑小技巧积累[1]
- Tint Drawable为图标着色
- Python开发【第一章】:简介和入门
- 如何使用科大 mirrors 加速 pip?
- JAXB方式读写xml实例
- 数据结构之对顺序栈的操作(C语言版)
- session入Redis
- Exchange Server 2016运维篇四:统一配置Outlook策略
- SQL索引一步到位
- 获取本机Ip
- 工作之一
- RN输入法遮挡TextInput
- android工具类总结
- 。。
- 本人所看Java书籍推荐(长期更新,更新速度与本人进度相同)
- 暑假训练round2 D: 好序列(Manacher)