HDU 2066 最简单的Dijkstra算法实例
来源:互联网 发布:js 上传文件的原理 编辑:程序博客网 时间:2024/06/05 06:00
题目链接:点击打开链接
直接进行一次Dijkstra就行了
#include <stdio.h>#include <string.h>#include <algorithm>#define M 0x3f3f3f3f#define N 1010using namespace std;int map[N][N];int dist[N], pre[N];bool vis[N];int t, s, d;int a, b, tim;int nn, minn;void Dijkstra(int v0){ for(int i = 1; i <= nn; i++) { dist[i] = map[v0][i]; vis[i] = false; if(dist[i] == M) { pre[i] = -1; } else { pre[i] = v0; } } dist[v0] = 0; vis[v0] = true; for(int i = 2; i <= nn; i++) { minn = M; int pos = v0; for(int j = 1; j <= nn; j++) { if(!vis[j] && dist[j] < minn) { minn = dist[j]; pos = j; } } vis[pos] = true; for(int j = 1;j <= nn; j++) { if(!vis[j] && map[pos][j] < M) { if(dist[pos] + map[pos][j] < dist[j]) { dist[j] = dist[pos] + map[pos][j]; pre[j] = pos; } } } }}int main(){ while(~scanf("%d%d%d", &t, &s, &d)) { nn = 0; memset(map, M, sizeof(map)); for(int i = 0; i < t; i++) { scanf("%d%d%d", &a, &b, &tim); nn = max(nn, max(a, b)); map[a][b] = map[b][a] = min(tim, map[a][b]); } for(int i = 0; i < s; i++) { scanf("%d", &a); map[0][a] = 0; } int m = M; Dijkstra(0); for(int i = 0; i < d; i++) { scanf("%d", &a); m = min(m, dist[a]); } printf("%d\n", m); } return 0;}
0 0
- HDU 2066 最简单的Dijkstra算法实例
- 【最短路径dijkstra算法】HDU 2066---一个人的旅行
- hdu 2066 一个人的旅行(最短路径 Dijkstra算法)
- HDU 2066 一个人的旅行 (最短路--Dijkstra算法)
- hdu 2066 一个人的旅行 最短路径dijkstra算法
- hdu 2066最短路径(Dijkstra算法)
- hdu 2066 最短路径Dijkstra算法
- 最简单的Dijkstra
- HDU 2066 一个人的旅行【最短路,多起点多终点,Dijkstra算法+spfa算法】
- HDU 2066 一个人的旅行【最短路,多起点多终点,Dijkstra算法+spfa算法】
- hdu 2066 Dijkstra算法
- HDU 2544 最短路(简单Dijkstra)
- HDU 2066 一个人的旅行 (Dijkstra算法)
- HDU 2544 (举例对dijkstra算法的简单讲解)
- 【最短路Dijkstra算法】hdu 2851
- hdu 2544 最短路 Dijkstra算法
- HDOJ/HDU 2544 最短路---dijkstra算法
- 最短路径 Dijkstra 算法 HDU 3790
- mysql基础
- shell学习(一)
- 二叉树的所有路径
- MySQL数据类型
- .write()与innerHTML的区别
- HDU 2066 最简单的Dijkstra算法实例
- linux之目录结构
- javaScript的数组队列操作
- Usage of loss functions
- Shader编程学习笔记(五)—— Fixed Function Shader 1
- MySQL
- hadoop初识
- 记广东公共交通大数据竞赛—— 公交线路客流预测
- HDU