hdu 1874 畅通工程续(bellman-ford,dijkstra)

原创 2016年05月30日 22:36:04
bellman-ford:
#include <stdio.h>
#define INF 99999999
int u[2200],v[2200],w[2200];
int dis[210];
int main()
{
    int n,m,i,k;
    while(scanf("%d %d",&n,&m) != EOF)
    {
        for(i = 0; i < m; ++i)
        {
            scanf("%d %d %d",&u[i],&v[i],&w[i]);
            u[i+m] = v[i];
            v[i+m] = u[i];
            w[i+m] = w[i];
        }
        int start,end;
        scanf("%d %d",&start,&end);
        for(i = 0; i < n; ++i)
            dis[i] = INF;
        dis[start] = 0;
        for(k = 0; k < n; ++k)
            for(i = 0; i < 2*m; ++i)
                if(dis[v[i]] > dis[u[i]] + w[i])
                    dis[v[i]] = dis[u[i]] + w[i];
        if(dis[end] < INF)
            printf("%d\n",dis[end]);
        else
            printf("-1\n");
    }
    return 0;
}

dijkstra:

#include <iostream>
#include <cstring>
using namespace std;
#define INF 99999999
int map[200][200];
int dis[200];
int book[200];
int n,m;
int main()
{
    int S,T,i,k,j,x,y,z;
    while(cin >> n >> m)
    {
        for(i = 0; i < n; ++i)
            for(j = 0; j < n; ++j)
                if(i == j) map[i][j] = 0;
                else map[i][j] = INF;

        for(i = 0; i < m; ++i)
        {
            cin >> x >> y >> z;
            if(z < map[x][y])
                map[x][y] = map[y][x] = z;
        }
        memset(book,0,sizeof(book));
        cin >> S >> T;
        for(i = 0; i < n; ++i)
            dis[i] = map[S][i];
        book[S] = 1;
        int min = INF;
        int u,v;
        for(k = 0; k < n; ++k)
        {
            min = INF;
            for(i = 0; i < n; ++i)
                if(!book[i] && min > dis[i]){ min = dis[i]; u = i;}
            book[u] = 1;
            for(v = 0; v < n; ++v)
                dis[v] = dis[v] < dis[u]+map[u][v] ? dis[v]:dis[u]+map[u][v];
        }
        if(dis[T] != INF)
            cout << dis[T] << endl;
        else
            cout << "-1" << endl;
    }
    return 0;
}


版权声明:如果发现错误或者其他什么不足之处。请留言。

hdu 1874 畅通工程续 dijsktra dijkstra+邻接表 优先队列 bellman-ford bellman-ford队列优化(基础题目,一步步优化)

又是一道最短路基础题目,注意两点就可以了: 1.输入的时候可能会两点之间有多条路,选最短的存起来。 2.判断有没有路径存在,可以判断一下终点到起点的距离是否小于原来初始化的最大值,如果是就输出结果,否...

HDU-1874-畅通工程续 (最短路 贝尔曼Bellman_Ford)

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

最短路问题bellman ford算法(Hdu-1874 畅通工程再续)

畅通工程续在 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,...
  • jert159
  • jert159
  • 2014年08月28日 08:27
  • 511

HDU 1874 畅通工程续 最短路径入门(dijkstra)

Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案...
  • AXuan_K
  • AXuan_K
  • 2014年07月22日 15:56
  • 946

hdu1874 畅通工程续 单源最短路径(SSSP)Dijkstra算法

hdu1874 畅通工程续
  • gwq5210
  • gwq5210
  • 2014年10月14日 14:57
  • 497

HDU1874_畅通工程续(Dijkstra最短路)

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

#HDU 1874 畅通工程续 【Dijkstra最短路】

题目: 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...
  • Reskip
  • Reskip
  • 2016年02月23日 01:01
  • 2717

畅通工程续HDU杭电1874【dijkstra算法 || SPFA】

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

hdu 1874 畅通工程续 dijkstra算法

点击打开链接题目链接 畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O...

hdu1874畅通工程续——最短路(Dijkstra算法)(spfa算法)

某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。 现...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 1874 畅通工程续(bellman-ford,dijkstra)
举报原因:
原因补充:

(最多只允许输入30个字)