• poj1797 Heavy Transportation(最短路变形)


    题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量
    解题思路:其实这个求最大边可以近似于求最短路,只要修改下找最短路更新的条件就可以了

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    const int maxn=1010;
    const int INF=0x3f3f3f3f;
    
    int lowc[maxn],cost[maxn][maxn];
    bool vis[maxn];
    
    int T;
    int n,m;
    
    void Dijkstra()
    {
        for(int i=2;i<=n;i++)
        {
            lowc[i]=cost[1][i];
        }
        lowc[1]=0;
        vis[1]=1;
        for(int i=1;i<=n;i++)
        {
            int k=-1;
            for(int j=1;j<=n;j++)
            {
                if(!vis[j]&&(k==-1||lowc[j]>lowc[k]))//此处是找出最大的值,因为这里wa了好几发
                {
                    k=j;
                }
            }
            if(k==-1) break;
            vis[k]=1;
            for(int j=1;j<=n;j++)
            {
                if(!vis[j]&&lowc[j]<min(lowc[k],cost[j][k])) //lowc[j]=max(lowc[j],max(lowc[k],cost[k][j]));
                {
                    lowc[j]=min(lowc[k],cost[j][k]);
                }
            }
        }
    }
    
    void init()
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(i==j) cost[i][j]=0;
                else cost[i][j]=0;
            }
        }
    }
    
    int main()
    {
        ios::sync_with_stdio(false);cin.tie(0);
        cin>>T;
        int kase=1;
        while(T--)
        {
            cin>>n>>m;
            memset(vis,0,sizeof(vis));
            init();
            for(int i=1;i<=m;i++)
            {
                int u,v,w;
                cin>>u>>v>>w;
                cost[u][v]=cost[v][u]=w;
            }
            Dijkstra();
            printf("Scenario #%d:
    ",kase++);
            printf("%d
    
    ",lowc[n]);
        }
        return 0;
    }
  • 相关阅读:
    #2019120500009-LG 数据结构 优先队列(1)
    #2019120500008-LG 数据结构 栈(1)
    2019D1T1 格雷码
    #2019120500006-LG 迷宫
    #2019120500004-LG 单词方阵
    #2019110700005
    hdu 1827强连通分量
    HDU 5691 状压dp
    HDU 4734--基础数位dp(递推)
    HDU 4638--莫队算法
  • 原文地址:https://www.cnblogs.com/Fy1999/p/9463980.html
Copyright © 2020-2023  润新知