zoukankan      html  css  js  c++  java
  • poj1502 MPI Maelstrom(单源最短路)

    题意:表面乍一看output是输出最小值,但仔细研究可以发现,这个最小值是从点1到所有点所花时间的最小值,其实是访问这些节点中的最大值,因为只有访问了最长时间的那个点才算访问了所有点。所以求最短路之后求最大值。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    
    const int maxn = 100 + 5;
    const int inf = 0x3f3f3f3f;
    int n, mp[maxn][maxn], dis[maxn];
    bool vis[maxn];
    inline int max( int a, int b ){
        return a>b ? a:b;
    }
    
    inline int min( int a, int b ){
        return a<b ? a:b;
    }
    
    inline int dij(){
        memset( vis, 0, sizeof(vis) );
        memset( dis, inf, sizeof(dis) );
        dis[1] = 0;
        for( int i=1; i<n; i++ ){
            int minid, MIN = inf;
            for( int j=1; j<=n; j++ ) if( !vis[j] && MIN>dis[j] ) MIN = dis[minid=j];
            vis[minid] = 1;
            for( int j=1; j<=n; j++ ) if( !vis[j] ) dis[j] = min( dis[j], dis[minid]+mp[minid][j] );
        }
        int res = -inf;
        for( int i=2; i<=n ;i++ )
            res = max( res, dis[i] );
        return res;
    }
    
    int main(){
        // freopen("in.txt", "r", stdin);
        scanf("%d", &n);
        for( int i=2; i<=n; i++ )
            for( int j=1; j<i; j++ ){
                char s[10];
                scanf("%s", s);
                if( s[0]=='x' ) mp[i][j] = mp[j][i] = inf;
                else{
                    int w = 0;
                    for( int k=0; s[k]; k++ ){
                        w *= 10;
                        w += s[k]-'0';
                    }
                    mp[i][j] = mp[j][i] = w;
                }
            }
        printf("%d
    ", dij());
    
        return 0;
    }
  • 相关阅读:
    xcode debug
    ios 使用Quartz 2D画虚线
    ios UIGestureRecognizer
    ios 实现带矩形框的屏幕截图
    ios UISegemetedControl
    centos最小安装之后无法使用ifconfig
    无线LoRa智能远传水表
    智能水表188协议汇总
    无线LoRa远传智能水表
    静电除尘器除尘原理
  • 原文地址:https://www.cnblogs.com/WAautomaton/p/10947317.html
Copyright © 2011-2022 走看看