dijkstra
来源:互联网 发布:access数据库安装包 编辑:程序博客网 时间:2024/05/29 06:46
#include"iostream" //2544#include"algorithm"#include"string"#include"vector"#include"cstdio"#include"cstring"#include"queue"using namespace std;const int maxn=100;const int inf=1000000;struct edge{int from,to,dist;edge(int f,int t,int d):from(f),to(t),dist(d){}};struct node{int d,u;node(int dd,int uu):d(dd),u(uu){}friend bool operator < (node a,node b) //优先队列中从根据d小到大排序{return a.d>b.d;}};struct dijkstra{vector<edge>edges;vector<int>g[maxn];int n,m;bool done[maxn];int d[maxn];int p[maxn]; //记录上一条弧void init(int n){this->n=n;for(int i=0;i<maxn;i++)g[i].clear();edges.clear();}void add(int from,int to,int dist){edges.push_back(edge(from,to,dist));m=edges.size();g[from].push_back(m-1);}void main(int s){priority_queue<node>Q;for(int i=0;i<n;i++) d[i]=inf;memset(done,0,sizeof(done));d[s]=0;Q.push(node(0,s));while(!Q.empty()){node x=Q.top();Q.pop();int u=x.u;if(done[u]) continue;done[u]=true;for(int i=0;i<g[u].size();i++){edge & e= edges[g[u][i]];if(d[e.to]>d[e.from]+e.dist){d[e.to]=d[e.from]+e.dist;p[e.to]=g[u][i];Q.push(node(d[e.to],e.to));}}}}};int main(){//freopen("a.txt","r",stdin);dijkstra a;int n,m;while(scanf("%d%d",&n,&m),n,m){a.init(n);for(int i=0;i<m;i++){int s,t,dist;scanf("%d%d%d",&s,&t,&dist);a.add(s-1,t-1,dist);a.add(t-1,s-1,dist);}a.main(0);cout<<a.d[n-1]<<endl;}return 0;}
0 0
- dijkstra
- dijkstra
- Dijkstra
- Dijkstra
- DIJKSTRA
- DIJKSTRA
- Dijkstra
- dijkstra
- dijkstra
- Dijkstra
- Dijkstra
- Dijkstra
- dijkstra
- Dijkstra
- Dijkstra
- Dijkstra
- dijkstra
- Dijkstra
- switch----java
- 蓝队网络虚拟主机如何设置301重定向
- Android 调去照相程序拍照
- HDU 5805 NanoApe Loves Sequence 线段树
- SpringMVC的maven工程搭建
- dijkstra
- UFLDL multi_classifier_accuracy.m
- poj1511
- Linux 下 DNS 污染解决办法
- [LeetCode]--47. Permutations II
- 转:Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 数据库范式详解
- json属性名必须加引号的讨论
- 设计模式-享元模式