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;
    }
    

      

  • 相关阅读:
    优秀JS学习站点
    一些比较好的论坛、博客
    最全前端问题及答案总结[转]
    EDM制作要点
    前端技术-调试工具(下)
    前端技术-调试工具(上)
    smartJQueryZoom(smartZoom) 的使用方法
    修改博客园日历的默认样式
    smartJQueryZoom(smartZoom) 存在的兼容性BUG,以及解决方法
    javascript实战 : 简单的颜色渐变
  • 原文地址:https://www.cnblogs.com/YDDDD/p/10274521.html
Copyright © 2011-2022 走看看