zoukankan      html  css  js  c++  java
  • POJ-3259-Wormholes

    链接:https://vjudge.net/problem/POJ-3259

    题意:

    农夫有N(1-500)个农场,有M(1-2500)条无向的路,和W(1-200)个有向的虫洞。

    给N,M,W。

    在给出M条路径个走过的时间,W个有向虫洞和虫洞可以穿越回之前多久。

    求能不能在某一时刻穿越回去看到自己。

    思路:

    bellman-ford算法,无向路为正权,有向虫洞为负权,当可以产生负权回环时,即可以实现穿越回去看到自己。

    代码:

    #include <iostream>
    #include <memory.h>
    using namespace std;
    const int MAXN = 6000;
    int n,m,w;
    int b = 1;
    struct Node
    {
        int l,r;
        int v;
    }node[MAXN];
    int dis[510];
    
    bool bellman_ford()
    {
        for (int i = 1;i<=n;i++)
            dis[i] = 999999;
        dis[1] = 0;
        for (int i = 1;i <= n-1;i++)
        {
            bool flag = false;
            for (int j = 1;j<b;j++)
            {
                int l = node[j].l,r = node[j].r,v = node[j].v;
                if (dis[r] > dis[l] + v)
                {
                    dis[r] = dis[l] + v;
                    flag = true;
                }
            }
            if (!flag)
                break;
        }
        for (int i = 1;i<b;i++)
            if (dis[node[i].r] > dis[node[i].l] + node[i].v)
                return true;
        return false;
    }
    
    int main()
    {
        int t;
        int l,r,v;
        scanf("%d",&t);
        while (t--)
        {
            scanf("%d%d%d",&n,&m,&w);
            b = 1;
            for (int i = 0;i<m;i++)
            {
                scanf("%d%d%d",&l,&r,&v);
                node[b].l = l;
                node[b].r = r;
                node[b++].v = v;
                node[b].l = r;
                node[b].r = l;
                node[b++].v = v;
            }
            for (int i = 0;i<w;i++)
            {
                scanf("%d%d%d",&l,&r,&v);
                node[b].l = l;
                node[b].r = r;
                node[b++].v = -v;
            }
            if (bellman_ford())
                printf("YES
    ");
            else
                printf("NO
    ");
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    【Auto.js images.matchTemplate() 函数的特点】
    Jquery动态bind绑定已有函数,函数自动执行的问题解决方法
    浅谈javascript的运行机制
    Git
    下拉框的点击事件
    点击其他区域菜单消失
    Chrome 中的 JavaScript 断点设置和调试技巧
    前端编辑工具有感
    我的jsonp跨域问题
    浅谈Json和jsonp
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10274521.html
Copyright © 2011-2022 走看看