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;
    }
  • 相关阅读:
    哈夫曼编码拓展题
    TrieTree
    并查集
    hash一致性
    布隆过滤器
    如何计算完全二叉树的结点数?
    如何翻转单链表和双向链表
    如何判断是搜索二叉树与完全二叉树
    文本分类之特征描述vsm和bow
    文本分类概述
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3248757.html
Copyright © 2011-2022 走看看