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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python编手机程序_python程序设计

    python编手机程序_python程序设计手机编程软件有很多,大部分都很难使用,操作不灵活,甚至不能安装第三方库。尝试安装了很多Python移动编程软件,发现了很多问题,不是编码效率低就是各种bug。今天,来自一位python编程小哥指导,向大家推荐两款精心挑选的手机编程软件,它们也是非常成熟的手机编程工具。QPythonOHQpython是一个轻量级的、成熟的python编程工具。它配有终端和简单的代码编辑器。它支持安装第三方库。目…

    2022年8月12日
    5
  • jvm 调优命令_java jvm调优工具

    jvm 调优命令_java jvm调优工具直接内存是在java堆外的、直接向系统申请的内存空间。通常访问直接内存的速度会优于Java堆。因此出于性能的考虑,读写频繁的场合可能会考虑使用直接内存。

    2025年6月8日
    1
  • 网络:下载进度条

    网络:下载进度条#import”ViewController.h”#import”ProgressButton.h”@interfaceViewController()@property(nonatomic,assign)longlongfileSize;//文件总大小@property(nonatomic,assign)

    2022年7月14日
    12
  • 使用XLSTransformer生成报表的步骤和流程[通俗易懂]

    使用XLSTransformer生成报表的步骤和流程[通俗易懂]使用XLSTransformer生成报表的步骤和流程:1,查询数据库记录,获得需要导出到execl中的数据;2,把数据封装到List中; 通常我们是这样做的:Listbusiness=newArrayListObject>();3,将List放到HashMap中;通常我们是这样做的:Mapbeans=newHashMap();busine

    2022年7月24日
    18
  • vsftp搭建_安装vsftpd

    vsftp搭建_安装vsftpd2016-05-29回答首先在client上建立publickey和privatekey,需要使用ssh-keygen命令[root@localhost.ssh]#ssh-keygen–trsageneratingpublic/privatersakeypair.enterfileinwhichtosavethekey(/root/.ssh/id_rsa…

    2022年9月24日
    0
  • wpsword表格转换成excel表格_wps文档表格怎么转换成wps表格

    wpsword表格转换成excel表格_wps文档表格怎么转换成wps表格相信经常做表的小伙伴,总会遇到Excel的格式转换问题,那么其实只要你通过以下几个方式,即可快速实现文件格式的转换,不信的话接下来就带各位一起看看吧!一、电脑端1.WPS格式转换首先是我们的WPS里面自带的格式转换功能,只要我们选择【PDF转Excel】按钮,然后就可以快速对PDF里面的表格提取出来,非常方便,平时需要做数据分析的小伙伴一定要记住这个操作了。2.office当然,如果你平时打印表格…

    2022年8月22日
    2

发表回复

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

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