最短路 POJ2387
2015-08-24 18:29
465 查看
第一种迪杰斯特拉算法求最短路
View Code
#include <iostream> #include <cstdio> #include <cstring> #include <queue> using namespace std; int MAX=1<<29; struct edge { int fro,to,val,next; }e[4010]; int head[1010]; int t,n; int div[1010]; bool vis[1010]; int main() { while(scanf("%d%d",&t,&n)!=EOF) { memset(head,-1,sizeof(head)); for(int i=1;i<=2*t;i+=2) { int a,b,c; scanf("%d%d%d",&a,&b,&c); e[i].fro=a; e[i].to=b; e[i].val=c; e[i].next=head[a]; head[a]=i; e[i+1].fro=b; e[i+1].to=a; e[i+1].val=c; e[i+1].next=head[b]; head[b]=i+1; } queue<int> q; for(int i=2;i<=n;i++) { div[i]=MAX; vis[i]=false; } div[1]=0; vis[1]=true; q.push(1); while(!q.empty()) { int v=q.front(); q.pop(); vis[v]=false; for(int i=head[v];i!=-1;i=e[i].next) { if(div[v]+e[i].val<div[e[i].to]) { div[e[i].to]=div[v]+e[i].val; if(!vis[e[i].to]) { vis[e[i].to]=true; q.push(e[i].to); } } } } cout<<div <<endl; } return 0; }
View Code
相关文章推荐
- 发布MQTT消息究竟有多快?
- 数组中的元素排序问题
- 学习笔记——Java调用Oracle存储过程
- 基于动态阈值的白平衡算法 照片校色
- Linux磁盘占用100%解决方法
- 楼宇及工业自动化总线协议介绍
- 数据库-事务
- sql语句关键字over的作用及用法
- Bacula服务端的安装
- ArrayList与LinkedList大比拼之add和remove
- poj 2135 最小费用最大流模板题
- R语言-差分要注意的问题
- 图表控件TeeChart干货分享(绘制2D、3D实时曲线---VC++示例源代码--网络首发)
- 关于actionBar 返回按钮
- POJ_2446_Chessboard
- [LeetCode] Palindrome Partitioning II
- 如何搭建Mantis 缺陷管理系统
- IOS RSA加密解密
- HDU 5411 CRB and puzzle (Dp + 矩阵快速幂)
- 竞品分析脑图