zoukankan      html  css  js  c++  java
  • POJ 1797 Heavy Transportation(Dijkstra)

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

    题意 :给出N个城市M条边,每条边都有容量值,求一条运输路线使城市1到N的运输量最大。

    思路 :用dijkstra对松弛条件进行变形。解释一下样例吧:从1运到3有两种方案
    方案1:1-2-3,其中1-2承重为3,2-3承重为5,则可以运送货物的最大重量是3(当大于3时明显1到不了2)
    方案2:1-3,可知1-3承重为4,故此路可运送货物的最大重量是4,故答案输出4

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;
    
    int a[1005][1005],n,m,dp[1005] ;
    bool map[1005] ;
    void dijk(int t)
    {
        memset(map,0,sizeof(map[0])*(n+3)) ;
        for(int i = 1 ; i <= n ; i++)
        {
            dp[i] = a[t][i] ;
        }
        dp[t] = 1000000 ;
        map[t] = true ;
        for(int i = 1 ; i < n ; i++)
        {
            int k = t ,temp = 0 ;
            for(int j = 1 ; j <= n ; j++)
            {
                if(map[j]) continue ;
                if(temp <= dp[j])
                {
                    temp = dp[k = j] ;
                }
            }
    
            map[k] = true ;
            if(map[n]) return ;
            for(int j = 1 ; j <= n ; j++)
            {
                if(map[j])
                    continue ;
                dp[j] = max(dp[j],min(dp[k],a[k][j])) ;
            }
        }
    }
    int main()
    {
        int T ,c = 1 ;
        scanf("%d",&T) ;
        while(T--)
        {
            scanf("%d %d",&n,&m) ;
            for(int i = 1 ; i <= n ; i++)
            {
                memset(a[i],0,sizeof(a[i][0])*(n+3)) ;
            }
            for(int i = 0 ; i < m ; i++)
            {
                int u,v,w ;
                scanf("%d %d %d",&u,&v,&w) ;
                a[u][v] = a[v][u] = max(a[u][v],w) ;
            }
            dijk(1) ;
            printf("Scenario #%d:
    ",c++) ;
            printf("%d
    
    ",dp[n]) ;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [题解] [JSOI2015] 圈地
    [题解] [JSOI2015] 最小表示
    [题解] [JSOI2015] 套娃
    [题解] [JSOI2015] 非诚勿扰
    [题解] [JSOI2015] 送礼物
    [题解] [JSOI2015] 送礼物
    [题解] [JSOI2015] 子集选取
    [题解] [JSOI2015] salesman
    AC自动机学习笔记
    [题解] [JSOI2014] 矩形并
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3458428.html
Copyright © 2011-2022 走看看