图论 -- 最短路径 dijkstra 算法模版 hdu 1874
来源:互联网 发布:庞氏骗局 知乎 编辑:程序博客网 时间:2024/05/18 02:45
最短路的dijkstra 算法模版 (以 hdu 1874为题目写出模版 详细解释 )
代码如下:
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn = 505;
const int inf = 0x3f3f3f3f;
int n,m;
int dis[maxn];
int S, T;
vector<pair<int, int> > e[maxn];
void dijkstra(int s)
{
dis[s] = 0; //dis[t]为s 到t的最小距离
priority_queue<pair<int, int> > que;
que.push(make_pair(-dis[s], s)); //因为pair里面带的比较规则是从大到小的排序,而我们需要的是从小到大的排序,所以加一个负号使得比较规则反过来;
while(!que.empty()){ // 当非空时
int now = que.top().second;
que.pop();
for(int i = 0; i < e[now].size(); i++){
int k = e[now][i].first; //此处二维数组的含义是 例如vector<int> a; 则其中的元素是a[0] a[1] ......
//而此时 vector<int> e[N] 所以此时的元素是 e[1][0] e[1][1] e[1][2] ..........
//而e[now][i] 表示的含义是 例如 定义 vector<int> e[100];
//e[2].push_back(10); e[2].push_back(11); e[2].push_back(12);
//所以e[now].size() 即 e[2].size() == 3; e[2][0] == 10; e[2][1] == 11;
//如果vector 中的是一个pair类型 则可以用 e[2][0].first; 即e[now][i].second 的由来;
if(dis[k] > dis[now] + e[now][i].second){
dis[k] = dis[now] + e[now][i].second;
que.push(make_pair(-dis[k], k));
}
}
}
}
int main()
{
while(scanf("%d%d", &n, &m) != EOF){
memset(dis, inf, sizeof(dis));
for(int i = 0; i < maxn; i++) e[i].clear();
for(int i = 0; i < m; i++){
int u, v, c;
scanf("%d%d%d", &u, &v, &c);
e[u].push_back(make_pair(v, c));
e[v].push_back(make_pair(u, c)); //注意双向的情况
}
scanf("%d%d", &S, &T);
dijkstra(S);
if(dis[T] < inf)
printf("%d\n", dis[T]);
else
printf("%d\n", -1);
}
return 0;
}
- 图论 -- 最短路径 dijkstra 算法模版 hdu 1874
- hdu 2066最短路径(Dijkstra算法)
- hdu 2066 最短路径Dijkstra算法
- 最短路径 Dijkstra 算法 HDU 3790
- hdu 1874 最短路径 dijkstra 和floyd 算法
- 【最短路径dijkstra算法】HDU 1874---畅通工程续
- hdu 1874 最短路径dijkstra
- 图论 最短路径dijkstra算法
- HDU 2112— HDU Today,最短路径算法,Dijkstra
- DIJKSTRA最短路径算法
- 最短路径算法-dijkstra
- dijkstra最短路径算法
- 最短路径 Dijkstra算法
- 最短路径(Dijkstra算法)
- 最短路径Dijkstra算法
- 最短路径 Dijkstra算法
- Dijkstra最短路径算法
- 最短路径dijkstra算法
- Python 内置函数
- System V IPC基础
- Reactor线程模型
- 整合ssm
- 01背包 hdu2546饭卡
- 图论 -- 最短路径 dijkstra 算法模版 hdu 1874
- javascript Date format(js日期格式化)
- android 边录制视频边添加OSD
- svn项目被锁住了,不能操作怎么办
- 【CodeForces】598B
- HTML5-楼层商品-购物车-放大镜
- 【持续集成框架Jenkins】环境搭建(win10)
- kafka-manager安装
- 算法1.2下压堆栈(链表表示)(algs4)