zoukankan      html  css  js  c++  java
  • POJ1125 Stockbroker Grapevine(最短路)

    题目链接

    分析:

    手感不错,1A。

    直接穷举的起点, 求出不同起点到其它点最短路中最长的一条的最小值(好绕)。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    const int maxn = 100+20;
    const int INF = (1<<28);
    
    int n, G[maxn][maxn], d[maxn];
    
    int dijkstra(int s) {
        bool vis[maxn];
    
        memset(vis, 0, sizeof(vis));
        for(int i=0; i<n; i++) {
            d[i] = G[s][i];
        }
        d[s] = 0; vis[s] = true;
    
        for(int i=0; i<n-1; i++) {
            int x, m = INF;
            for(int y=0; y<n; y++) if(!vis[y] && m >= d[y]) m = d[x=y];
            vis[x] = true;
            for(int y=0; y<n; y++) if(!vis[y] && d[y] > d[x]+G[x][y]) {
                d[y] = d[x] + G[x][y];
            }
        }
    
        int ans = -1;
        for(int i=0; i<n; i++) {
            if(i == s) continue;
            ans = max(ans, d[i]);
        }
    
        return ans;
    }
    
    int main() {
        int m, v, c;
    
        while(scanf("%d", &n) == 1 && n != 0) {
            for(int i=0; i<n; i++)
                for(int j=0; j<n; j++)
                    G[i][j] = INF;
    
            for(int u=0; u<n; u++) {
                scanf("%d", &m);
                for(int i=0; i<m; i++) {
                    scanf("%d %d", &v, &c);
                    v--;
                    G[u][v] = c;
                }
            }
    
            int ans = INF, k;
            for(int i=0; i<n; i++) {
                int res = dijkstra(i);
                if(res == -1) {
                    ans = -1; break;
                }
                else if(ans > res) {
                    ans = res;
                    k = i;
                }
            }
    
            if(ans != INF) printf("%d %d
    ", k+1, ans);
            else printf("disjoint
    ");
        }
    
    
        return 0;
    }
  • 相关阅读:
    noi放苹果
    二分 网线主管
    hdu 1421 dp
    hdu 1087 最大上升子序列的和(dp或线段树)
    快速排序+查找
    zoj 1425 最大交叉匹配
    hdu 3501 容斥原理或欧拉函数
    hdu 4671 异面直线的距离
    hdu 3320 计算几何(三维图形几何变换)
    hdu 2857 点在直线上的投影+直线的交点
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3248757.html
Copyright © 2011-2022 走看看