poj 3259(bellman最短路径)[通俗易懂]

poj 3259(bellman最短路径)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Wormholes
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 30169   Accepted: 10914

Description

While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a time that is BEFORE you entered the wormhole! Each of FJ’s farms comprises N (1 ≤ N ≤ 500) fields conveniently numbered 1..NM (1 ≤ M ≤ 2500) paths, and W (1 ≤ W ≤ 200) wormholes.

As FJ is an avid time-traveling fan, he wants to do the following: start at some field, travel through some paths and wormholes, and return to the starting field a time before his initial departure. Perhaps he will be able to meet himself :) .

To help FJ find out whether this is possible or not, he will supply you with complete maps to F (1 ≤ F ≤ 5) of his farms. No paths will take longer than 10,000 seconds to travel and no wormhole can bring FJ back in time by more than 10,000 seconds.

Input

Line 1: A single integer, 
F
F farm descriptions follow. 

Line 1 of each farm: Three space-separated integers respectively: 
N
M, and 
W 

Lines 2..
M+1 of each farm: Three space-separated numbers (
S
E
T) that describe, respectively: a bidirectional path between 
S and 
E that requires 
T seconds to traverse. Two fields might be connected by more than one path. 

Lines 
M+2..
M+
W+1 of each farm: Three space-separated numbers (
S
E
T) that describe, respectively: A one way path from 
S to 
E that also moves the traveler back 
T seconds.

Output

Lines 1..
F: For each farm, output “YES” if FJ can achieve his goal, otherwise output “NO” (do not include the quotes).

Sample Input

2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8

Sample Output

NO
YES

Hint

For farm 1, FJ cannot travel back in time. 

For farm 2, FJ could travel back in time by the cycle 1->2->3->1, arriving back at his starting location 1 second before he leaves. He could start from anywhere on the cycle to accomplish this.

Source

AC代码:

#include<iostream>using namespace std;struct Point{    int s,e,t;}a[10000];int se;int n,m,w;int bell_man(int start){    int dis[10000];    for(int i=1;i<=n;i++)        dis[i]=999999;    dis[start]=0;    for(int i=1;i<n;i++)    for(int j=0;j<se;j++)        dis[a[j].e] = dis[a[j].e] > dis[a[j].s] + a[j].t ? dis[a[j].s] + a[j].t : dis[a[j].e];    for(int i=0;i<se;i++){        if(dis[a[i].e] > dis[a[i].s] + a[i].t)            return 1;    }    return 0;}int main(){    int T; cin>>T;    while(T--){        se=0;        cin>>n>>m>>w;        for(int i=0;i<m;i++){            int s,e,t;            cin>>s>>e>>t;            a[se].s=s; a[se].e=e; a[se++].t=t;            a[se].s=e; a[se].e=s; a[se++].t=t;        }        for(int i=0;i<w;i++){            int s,e,t;            cin>>s>>e>>t;            a[se].s=s; a[se].e=e; a[se++].t=-t;        }        //int k;        //for(k=1;k<=n;k++){          //事实上正确的起点应该要历遍全部点。可是这种超时了                                     //这个题目仅仅要1点就能够了。算是题目的一个非常大漏洞吧,数据太水了            if(bell_man(1)){                cout<<"YES"<<endl;                //break;            }        //}        //if(k>n)        else            cout<<"NO"<<endl;    }    return 0;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116729.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue关闭eslint的方法

    vue关闭eslint的方法只需要在vue.config.js文件进行如下配置就可以(如果没有这个文件,在项目的根目录下新建一个这样的文件就可以)module.exports={lintOnSave:false}

    2022年6月10日
    32
  • pycharm2021.12.12激活-激活码分享

    (pycharm2021.12.12激活)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    117
  • Web前端开发中的MCRV模式(转)

    Web前端开发中的MCRV模式(转)

    2021年7月9日
    89
  • 如何使用SQL Server配置管理器

    如何使用SQL Server配置管理器SQLServerconfigurationmanagerisatoolprovidedbyMicrosoftSQLServer.WhenweinstallSQLServer,itisinstalledautomatically.Itisusedforthefollowingpurposes.SQLServer配置管理器是Mic…

    2022年7月20日
    10
  • C++简单有趣的恶搞问答关机程序

    C++简单有趣的恶搞问答关机程序点进来的朋友首先反思一下自己:为什么进了CSDN这样一个学习的社区却还要来看我这种无聊的额恶搞程序呢?哈哈!我来替你们回答吧——因为无聊呗!没错,我也是无聊,五一假期显得无聊,看到高中班群实在安静决定写个小程序恶搞一下班级同学。闲话不多说,先来看一下效果吧!当你的同学收到.exe的可执行文件之后双击,首先他看到的是这样的界面:好吧,看到题目一句一句的跳出,如果你是我同学,估计你也应该开始…

    2022年7月22日
    19
  • JS中Class类的详解

    JS中Class类的详解概述    在ES6中,class(类)作为对象的模板被引入,可以通过class关键字定义类。它可以被看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。    类实际上是个“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。严格模式    类和模块的内部,默认就是严格模式,所以不需要使用usestrict指定运行模式…

    2022年6月2日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号