Wormholes (弗洛伊德 )
来源:互联网 发布:蓝牙连接软件 编辑:程序博客网 时间:2024/06/07 03:57
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..N,M (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 toF (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.
23 3 11 2 21 3 42 3 13 1 33 2 11 2 32 3 43 1 8
NOYES
题目大概:
几个农场之间,有双向通道(正权值),有单向通道(负权值),找出其中是否有负权回路。
思路:
用弗洛伊德算法。
代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m,h;int dis[6000];int s=0;struct point{ int l,r,shu;}a[6000];int fin(){ dis[1]=0; for(int i=1;i<n-1;i++) { for(int j=1;j<=s;j++) { if(dis[a[j].r]>dis[a[j].l]+a[j].shu) dis[a[j].r]=dis[a[j].l]+a[j].shu; } } for(int j=1;j<=s;j++) if(dis[a[j].r]>dis[a[j].l]+a[j].shu)return 0; return 1;}int main(){ int t; cin>>t; for(int i=1;i<=t;i++) { memset(dis,10003,sizeof(dis)); memset(a,0,sizeof(a)); s=0; cin>>n>>m>>h; for(int j=1;j<=m;j++) {int z1,z2,z3; cin>>z1>>z2>>z3; a[++s].l=z1; a[s].r=z2; a[s].shu=z3; a[++s].l=z2; a[s].r=z1; a[s].shu=z3; } for(int j=1;j<=h;j++) {int z1,z2,z3; cin>>z1>>z2>>z3; a[++s].l=z1; a[s].r=z2; a[s].shu=-z3; } int pp=fin(); if(pp==1)cout<<"NO"<<endl; else cout<<"YES"<<endl; } return 0;}
- Wormholes (弗洛伊德 )
- 弗洛伊德(Floyd)算法
- 弗洛伊德(Floyd)算法
- 弗洛伊德(Floyd)算法
- UVA-10048(弗洛伊德)
- 弗洛伊德(Floyd)算法
- Stockbroker Grapevine (弗洛伊德)
- Currency Exchange (弗洛伊德)
- Frogger(弗洛伊德变形)
- Frogger (弗洛伊德)
- 弗洛伊德
- 弗洛伊德
- 弗洛伊德(Floyd)算法过程
- 弗洛伊德(Floyd)算法过程
- Floyd算法(弗洛伊德算法)
- poj2240Arbitrage(最短路 弗洛伊德)
- Stockbroker Grapevine (弗洛伊德算法)
- USACO Wormholes(模拟)
- 设置H5页面适应手机屏幕
- main函数参数及可变参数列表
- CentOS中配置lvm存储
- 8.4
- Vue 学习笔记
- Wormholes (弗洛伊德 )
- C++编译与链接
- 指针、++、--前置后置不同运算
- UAa11582--Colossal Fibonacci Numbers!(快速幂)
- 1.4 查找最大或最小的 N 个元素
- C_取随机数函数的使用
- android屏幕尺寸详解
- java GUI事件模型的调用流程
- 一只断了翅的蚂蚁