• poj 1797 Heavy Transportation (spfa 最短路 )


    给出一个图 图中每段路都有个载重量 一条路径的总载重量为奇各段路中 载重量最小的值   找从1到n的各路径中总载重量最大的 

    d[i]  为从起点到 点i 的路径中 总载重量最大的

    只要将spfa 松弛的条件改一下 就好了

    if(d[b]<min(d[a],w[a][b]) 

          d[b]=min(d[a],w[a][b])

    #include<iostream>
    #include<string.h>
    #include<queue>
    #include<vector>
    #define INF 100000000
    using namespace std;
    
    vector <int > g[2002],w[2002];
    int vis[2002],d[2002];
    
    int min(int a,int b)
    {
        return a<b?a:b;
    }
    
    void spfa(int s,int n)
    {
        queue <int > q;
        memset(vis,0,sizeof(vis));
        memset(d,0,sizeof(d));
        q.push (1);//vis[1]=1;
        while(!q.empty ())
        {
            int a,b,v;
            a=q.front (); q.pop (),vis[a]=0;
            for(int i=0;i<g[a].size ();i++)
            {
                b=g[a][i];  
                v=w[a][i];
                if(a==1)
                {
                    d[b]=v;
                    q.push(b);
                    vis[b]=1;
                
                }
                else if(min(d[a],v)>d[b])
                {
                    d[b]=min(d[a],v);
                    if(!vis[b])
                    {
                        q.push (b);
                        vis[b]=1;
                    }
                }
                
            }
        }
    }
        
    
        
    
    int main() 
    {
        int i,n,m,t,a,b,c,p=1;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&m);
            for(i=1;i<=m;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                g[a].push_back (b);
                w[a].push_back (c);
                g[b].push_back (a);
                w[b].push_back (c);
            }
            spfa(1,n);
            printf("Scenario #%d:
    ",p++);
            printf("%d
    
    ",d[n]);
            for(int j=1;j<=n;j++)
            {
                g[j].clear ();
                w[j].clear ();
            }
        }
        return 0;
    }
  • 相关阅读:
    关于float与double
    【编程实践】母牛生小牛
    wlan的QOS配置
    C语言itoa函数和atoi 函数
    类似于QQ的简单的聊天代码
    多线程吃饺子练习
    线程练习
    接口练习
    电视练习
    5.22
  • 原文地址:https://www.cnblogs.com/assult/p/3222489.html
Copyright © 2020-2023  润新知