zoukankan      html  css  js  c++  java
  • HDU

    题目链接
      在普通的floyd的第一重循环内加上的一段代码,求3点形成的最小环,这题有个坑点是因为会加三个变量, INF小心开太大爆int。

    const int INF = INT_MAX/10;
    const int maxn = 1e3+10;
    int g[maxn][maxn], g2[maxn][maxn], n, m, minr;
    void init() {
        for (int i = 1; i<=n; ++i)
            for (int j = 1; j<=n; ++j)
                g2[i][j] = g[i][j] = INF;
        minr = INF;
    }
    void floyd() {
        for (int k = 1; k<=n; ++k) {
            for (int i = 1; i<k; ++i)
                for (int j = 1; j<i; ++j)
                    if (minr > g[i][j] + g2[j][k] + g2[k][i])
                        minr = g[i][j] + g2[j][k] + g2[k][i];
            for (int i = 1; i<=n; ++i)
                for (int j = 1; j<=n; ++j)
                    if (g[i][j] > g[i][k] + g[k][j])
                        g[i][j] = g[i][k] + g[k][j];
        }
    }
    int main(void) {
        while(~scanf("%d%d", &n, &m)) {
            init();
            for (int i = 0, u, v, c; i<m; ++i) {
                scanf("%d%d%d", &u, &v, &c);
                g2[u][v] = g2[v][u] = g[u][v] = g[v][u] = min(g[u][v], c);
            }
            floyd();
            if (minr==INF) printf("It's impossible.
    ");
            else printf("%d
    ", minr);
        }
        return 0;
    }
    
  • 相关阅读:
    泰勒综合
    滤波器、窗等的系数为什么是对称的?
    l'alphabet en francais
    弄清for循环的本质
    js中的闭包
    js中用正则表达式
    java Calendar
    Android实现XML解析技术
    junit4 详解
    redhat vi 命令
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/12584838.html
Copyright © 2011-2022 走看看