(重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。
今天初看dijkstra,先拿这两题练手,其他变形题还是不是很懂。
模版题,纯练打字。。。
HDU 1874:
#include <cstdio> #define MAXN 200
#define INF 0xfffff int n;
int Edge[MAXN][MAXN];
int s[MAXN];
int dist[MAXN];
int path[MAXN]; void Dijkstra(int v0) {
int i, j, k;
for (i = 0; i < n; i++) {
dist[i] = Edge[v0][i];
s[i] = 0;
if (i != v0 && INF > dist[i])
path[i] = v0;
else
path[i] = -1;
}
s[v0] = 1;
dist[v0] = 0;
for (i = 0; i < n - 1; i++) {
int min = INF, u = v0;
for (j = 0; j < n; j++)
if (!s[j] && dist[j] < min){
u = j;
min = dist[j];
}//if
s[u] = 1;
for (k = 0; k < n; k++) {
if (!s[k] && Edge[u][k] < INF && dist[u] + Edge[u] [k] < dist[k]) {
dist[k] = dist[u] + Edge[u][k];
path[k] = u;
}//if
}//for
}//for
} int main() {
int m;
int i, j;
while (scanf("%d%d", &n, &m) != EOF) {
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
if (i == j)
Edge[i][j] = 0;
else
Edge[i][j] = INF;
int x, y, z;
for (i = 0; i < m; i++) {
scanf("%d%d%d", &x, &y, &z);
if (z < Edge[x][y])
Edge[y][x] = Edge[x][y] = z;
}
scanf("%d%d", &x, &y);
Dijkstra(x);
if (dist[y] < INF)
printf("%d\n", dist[y]);
else
printf("-1\n");
}//while
return 0;
}
HDU 2544:
#include <cstdio> #define MAXN 200
#define INF 0xfffff int n;
int Edge[MAXN][MAXN];
int s[MAXN];
int dist[MAXN];
int path[MAXN]; void Dijkstra(int v0) {
int i, j, k;
for (i = 0; i < n; i++) {
dist[i] = Edge[v0][i];
s[i] = 0;
if (i != v0 && INF > dist[i])
path[i] = v0;
else
path[i] = -1;
}
s[v0] = 1;
dist[v0] = 0;
for (i = 0; i < n - 1; i++) {
int min = INF, u = v0;
for (j = 0; j < n; j++)
if (!s[j] && dist[j] < min){
u = j;
min = dist[j];
}//if
s[u] = 1;
for (k = 0; k < n; k++) {
if (!s[k] && Edge[u][k] < INF && dist[u] + Edge[u] [k] < dist[k]) {
dist[k] = dist[u] + Edge[u][k];
path[k] = u;
}//if
}//for
}//for
} int main() {
int m;
int i, j;
while (scanf("%d%d", &n, &m) && n && m) {
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
if (i == j)
Edge[i][j] = 0;
else
Edge[i][j] = INF;
int x, y, z;
for (i = 0; i < m; i++) {
scanf("%d%d%d", &x, &y, &z);
if (z < Edge[x-1][y-1])
Edge[y-1][x-1] = Edge[x-1][y-1] = z;
}
Dijkstra(0);
printf("%d\n", dist[n - 1]);
}//while
return 0;
}
(重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。的更多相关文章
- ACM: HDU 1874 畅通工程续-Dijkstra算法
HDU 1874 畅通工程续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Desc ...
- HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题
参考 此题Dijkstra算法,一次AC.这个算法时间复杂度O(n2)附上该算法的演示图(来自维基百科): 附上: 迪科斯彻算法分解(优酷) problem link -> HDU 1874 ...
- hdu 1874 畅通工程续
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过 ...
- HDU 1874畅通工程续(迪杰斯特拉算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others) ...
- hdu 1874 畅通工程续 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目分析:输入起点和终点,顶点的个数,已连通的边. 输出起点到终点的最短路径,若不存在,输出-1 ...
- HDU 1874 畅通工程续【Floyd算法实现】
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...
- HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)
题目链接: 传送门 畅通工程续 Time Limit: 1000MS Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
- hdu 1874 畅通工程续(迪杰斯特拉优先队列,floyd,spfa)
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
随机推荐
- 转载:mac系统XAMPP配置虚拟主机
安装完xampp后,想添加一个virsualhost,一直报错.查了半天资料,都是乱说,后来看到了一篇国外的文章,终于弄出来了,整理一下. 第一步,配置本地hosts sudo vi /etc/hos ...
- redis的sets类型
set是集合 , 它是string类型的无序集合 . set是通过hash table 实现的 , 添加.删除和查找的复杂度都是O(1) . 对集合我们可以取并集.交集.差集.通过这些操作我们可以实现 ...
- chrome 在home下生成 libpeerconnection.log
chrome 在home下生成 libpeerconnection.log,比较烦恼. google了下,可以有方法绕过去,如下. /opt/google/chrome/google-chrome 找 ...
- JSF 2.0 + Ajax hello world example
In JSF 2.0, coding Ajax is just like coding a normal HTML tag, it's extremely easy. In this tutorial ...
- SQL语句执行时所发生的步骤
- css知识汇总
<style type="text/css"> table{ border-collapse:collapse; } table, td, th{ border:1px ...
- POJ 3694 Network (tarjan + LCA)
题目链接:http://poj.org/problem?id=3694 题意是给你一个无向图n个点,m条边,将m条边连接起来之后形成一个图,有Q个询问,问将u和v连接起来后图中还有多少个桥. 首先用t ...
- Sql CLR
using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsof ...
- Unity3D之空间转换学习笔记(一):场景物体变换
该系列笔记基于Unity3D 5.x的版本学习,部分API使用和4.x不一致. 目前在Unity3D中,除了新的UGUI部分控件外,所有的物体(GameObject)都必带有Transform组件,而 ...
- DbHelper数据操作类
摘要:本文介绍一下DbHelper数据操作类 微软的企业库中有一个非常不错的数据操作类.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过 ...