floyd解法

今天初看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解法。的更多相关文章

  1. ACM: HDU 1874 畅通工程续-Dijkstra算法

    HDU 1874 畅通工程续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Desc ...

  2. HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题

    参考 此题Dijkstra算法,一次AC.这个算法时间复杂度O(n2)附上该算法的演示图(来自维基百科): 附上:  迪科斯彻算法分解(优酷) problem link -> HDU 1874 ...

  3. hdu 1874 畅通工程续

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过 ...

  4. HDU 1874畅通工程续(迪杰斯特拉算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)     ...

  5. hdu 1874 畅通工程续 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目分析:输入起点和终点,顶点的个数,已连通的边. 输出起点到终点的最短路径,若不存在,输出-1 ...

  6. HDU 1874 畅通工程续【Floyd算法实现】

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...

  8. HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)

    题目链接: 传送门 畅通工程续 Time Limit: 1000MS     Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...

  9. hdu 1874 畅通工程续(迪杰斯特拉优先队列,floyd,spfa)

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

随机推荐

  1. 转载:mac系统XAMPP配置虚拟主机

    安装完xampp后,想添加一个virsualhost,一直报错.查了半天资料,都是乱说,后来看到了一篇国外的文章,终于弄出来了,整理一下. 第一步,配置本地hosts sudo vi /etc/hos ...

  2. redis的sets类型

    set是集合 , 它是string类型的无序集合 . set是通过hash table 实现的 , 添加.删除和查找的复杂度都是O(1) . 对集合我们可以取并集.交集.差集.通过这些操作我们可以实现 ...

  3. chrome 在home下生成 libpeerconnection.log

    chrome 在home下生成 libpeerconnection.log,比较烦恼. google了下,可以有方法绕过去,如下. /opt/google/chrome/google-chrome 找 ...

  4. 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 ...

  5. SQL语句执行时所发生的步骤

  6. css知识汇总

    <style type="text/css"> table{ border-collapse:collapse; } table, td, th{ border:1px ...

  7. POJ 3694 Network (tarjan + LCA)

    题目链接:http://poj.org/problem?id=3694 题意是给你一个无向图n个点,m条边,将m条边连接起来之后形成一个图,有Q个询问,问将u和v连接起来后图中还有多少个桥. 首先用t ...

  8. Sql CLR

    using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsof ...

  9. Unity3D之空间转换学习笔记(一):场景物体变换

    该系列笔记基于Unity3D 5.x的版本学习,部分API使用和4.x不一致. 目前在Unity3D中,除了新的UGUI部分控件外,所有的物体(GameObject)都必带有Transform组件,而 ...

  10. DbHelper数据操作类

    摘要:本文介绍一下DbHelper数据操作类 微软的企业库中有一个非常不错的数据操作类.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过 ...