zoukankan      html  css  js  c++  java
  • poj 3259 Wormholes

    和poj 1860差不多都用bellman—ford最简单的版本就可以了,关键在于巧妙的运用,做过了才能更好地理解》

    #include<stdio.h>
    #include<queue>
    #include<string.h>
    #define INF 100000000
    #define MAXN1 520
    #define MAXN 8000
    
    int u[MAXN],v[MAXN],wt[MAXN], d[MAXN1];
    int n, m, w, T,p;
    
    void init()
    {
        scanf("%d%d%d",&n,&m,&w);
        p = 0;
        for(int i = 0; i < m; i ++)
        {
            scanf("%d%d%d",&u[p],&v[p],&wt[p]);
            p++;
            u[p] = v[p-1];
            v[p] = u[p-1];
            wt[p] = wt[p-1];
            p++;
        }
        for(int i = m; i < m+w; i ++)
        {
            scanf("%d%d%d",&u[p],&v[p],&wt[p]);
            wt[p] = -wt[p];
            p++;
        }
    }
    
    void bellman_ford(int h)
    {
        for(int i = 1; i <= n; i ++) d[i] = 0;
        d[h] = 0;
        for(int k = 0; k < n-1; k ++)
        for(int i = 0; i < p; i ++)
        {
            int x = u[i], y = v[i];
            if(d[x] < INF && d[y] > d[x] + wt[i])
            d[y] = d[x] + wt[i];
        }
    }
    
    int main()
    {
        while(~scanf("%d",&T))
        {
            while(T --)
            {
                init();
                int ok = 0;
                    bellman_ford(1);
                    for(int j = 0; j < p; j ++)
                    {
                        int x = u[j], y = v[j];
                        if(d[x] < INF && d[y] > d[x] + wt[j])
                        {ok = 1; break;}
                    }
                if(ok == 1) printf("YES\n");
                else printf("NO\n");
            }
        }
        return 0;
    }
  • 相关阅读:
    HTML DOM 节点
    HTML DOM 简介
    XML DOM
    JavaScript Window Screen
    JavaScript Window
    JavaScript Date(日期) 对象
    11.2 正睿停课训练 Day15
    10.31 正睿停课训练 Day13
    10.29 正睿停课训练 Day11
    BZOJ.4361.isn(DP 树状数组 容斥)
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2620170.html
Copyright © 2011-2022 走看看