zoukankan      html  css  js  c++  java
  • poj 3259 Wormholes(bellman-ford判断负环)

    题目链接:http://poj.org/problem?id=3259

    题目就是问你能否回到原点而且时间还倒回去了。题目中有些路中有单向的虫洞能让时间回到过去

    所以只要将虫洞这条边的权值赋为负然后再判断有没有负环就行了。

    #include <iostream>
    #include <cstring>
    using namespace std;
    const int inf = 10001;
    int f , n , m , w ,dis[1001] , counts;
    struct TnT {
        int u , v , weight;
    }T[5200];
    void relax(int u , int v , int weight) {
        if(dis[v] > dis[u] + weight)
            dis[v] = dis[u] + weight;
    }
    bool bellman_ford() {
        for(int i = 1 ; i < n ; i++) {
            for(int j = 1 ; j <= counts ; j++) {
                relax(T[j].u , T[j].v , T[j].weight);
            }
        }
        bool flag = true;
        for(int i = 1 ; i <= counts ; i++) {
            if(dis[T[i].v] > dis[T[i].u] + T[i].weight) {
                flag = false;
                break;
            }
        }
        return flag;
    }
    int main() {
        cin >> f;
        int s , e , t;
        while(f--) {
            cin >> n >> m >> w;
            counts = 0;
            memset(dis , inf , sizeof(dis));
            for(int i = 1 ; i <= m ; i++) {
                cin >> s >> e >> t;
                T[++counts].u = s , T[counts].v = e , T[counts].weight = t;
                T[++counts].u = e , T[counts].v = s , T[counts].weight = t;
            }
            for(int i = 1 ; i <= w ; i++) {
                cin >> s >> e >> t;
                T[++counts].u = s , T[counts].v = e , T[counts].weight = -t;
            }
            if(bellman_ford()) {
                cout << "NO" << endl;
            }
            else {
                cout << "YES" << endl;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    BZOJ1556 墓地秘密
    [NOI2006]网络收费
    UVA11401 Triangle Counting
    UVA11538 Chess Queen
    BZOJ2560 串珠子
    BZOJ4057 [Cerc2012]Kingdoms
    [HNOI2012] 集合选数
    [Haoi2016]字符合并
    [Snoi2013]Quare
    洛谷平衡树模板总结
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/6517090.html
Copyright © 2011-2022 走看看