zoukankan      html  css  js  c++  java
  • poj 1797 Heavy Transportation(Dijkstar变形)

    http://poj.org/problem?id=1797

    给定n个点,及m条边的最大负载,求顶点1到顶点n的最大载重量。
    用Dijkstra算法解之,只是需要把“最短路”的定义稍微改变一下,
    A到B的路长定义为路径上边权最小的那条边的长度,
    而最短路其实是A到B所有路长的最大值。


    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<stdlib.h>
    #include<algorithm>
    #define N 1010
    #define INF 0x3f3f3f3f
    
    using namespace std;
    
    int G[N][N], dist[N];
    bool vis[N];
    int n;
    
    void Init()
    {
        int i;
        memset(vis, false, sizeof(vis));
        for(i = 1 ; i <= n ; i++)
            dist[i] = G[1][i];//dist[i]表示从起点到i点的载重量
    }
    
    int Dij(int Start, int End)
    {
        int Max, i, j, index;
        dist[Start] = 0;
        for(i = 1 ; i <= n ; i++)
        {
            Max = 0;
            for(j = 1 ; j <= n; j++)
            {
                if(!vis[j] && Max < dist[j])
                {
                    Max = dist[j];
                    index = j;
                }
            }//找最大载重量
            vis[index] = true;
            for(j = 1 ; j <= n ; j++)
            {
                if(!vis[j] && dist[j] < min(dist[index], G[index][j]))
                   dist[j] = min(dist[index], G[index][j]);
            }
        }
        return dist[End];
    }
    
    int main()
    {
        int m, a, b, c, t, x = 0;
        scanf("%d", &t);
        while(t--)
        {
            x++;
            memset(G, 0, sizeof(G));
            scanf("%d%d", &n, &m);
            while(m--)
            {
                scanf("%d%d%d", &a, &b, &c);
                G[a][b] = G[b][a] = c;
            }
            Init();
            printf("Scenario #%d:
    %d
    
    ", x, Dij(1, n));
        }
        return 0;
    }
  • 相关阅读:
    可复用的自定义Adapter
    SharedPreference工具类
    MD5工具类
    面试题
    策略模式
    java画图之初体验
    接口与事件之图形界面的认证登录
    “奥特曼“与”小怪兽”的继承者们之战
    “奥特曼攻打小怪兽”java学习打怪升级第一步
    使用智能指针管理对象资源
  • 原文地址:https://www.cnblogs.com/qq2424260747/p/4744135.html
Copyright © 2011-2022 走看看