链接: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\n");elseprintf("NO\n");}return 0;
}

  

转载于:https://www.cnblogs.com/YDDDD/p/10274521.html

POJ-3259-Wormholes相关推荐

  1. POJ 3259 Wormholes(负权环路)

    题意: 农夫约翰农场里发现了很多虫洞,他是个超级冒险迷,想利用虫洞回到过去,看再回来的时候能不能看到没有离开之前的自己,农场里有N块地,M条路连接着两块地,W个虫洞,连接两块地的路是双向的,而虫洞是单 ...

  2. POJ 3259 Wormholes

    题目链接 题意 问是否存在负环 AC 因为Dijkstra不能处理带有负边权的图,可以用spfa 和 BellmenFord spfa using namespace std; int inf = 0 ...

  3. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

  4. POJ - 3259 Wormholes(判断负环)

    题目链接:点击查看 题意:最短路判断负环 这里介绍三种方法判断负环,分别是spfa,bellman-ford和flyod算法,不过spfa的速度能比bellman-ford的速度慢了接近20倍是出乎 ...

  5. POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)

    题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前 ...

  6. POJ 3259 Wormholes SPFA判负环

    思路:SPFA判负环 数组不要开太小-- (后面附一组测试数组) // by SiriusRen #include <queue> #include <cstdio> #inc ...

  7. 【POJ/算法】 3259 Wormholes(Bellman-Ford算法, SPFA ,FLoyd算法)

    Bellman-Ford算法 Bellman-Ford算法的优点是可以发现负圈,缺点是时间复杂度比Dijkstra算法高.而SPFA算法是使用队列优化的Bellman-Ford版本,其在时间复杂度和编 ...

  8. 【POJ】3259 Wormholes

    题目链接:http://poj.org/problem?id=3259 题意:n个农场,m条双向路径,w条单向路径(虫洞).单向虫洞路径是负值.农夫想知道自己能不能看到自己(X). 题解:其实刚开始没 ...

  9. 【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)

    题干: 农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500 ...

  10. POJ 3259 SPFA

    这题让我英语太受打击了,题意难懂,读懂题意纸老虎. 算法: 1.题意本质就是判断是否存在负权回路. 2.SPFA,一个点入队大于等于N次,就说明它存在负权回路. View Code #include ...

最新文章

  1. python学习路线-Python学习路线图(2020年最新版)
  2. 【Python】集合类型产生KeyError异常原因及数据去重
  3. 给我往死里贪!——24行代码AC_今年暑假不AC HDU - 2037(贪心模板讲解)
  4. 全国计算机等级考试题库二级C操作题100套(第91套)
  5. HAProxy的日志配置以及ACL规则实现负载均衡
  6. 认识与入门:Markdown
  7. Page Object设计模式实践
  8. mysql 添加删除权限_MySQL实例讲解:添加账户、授予权限、删除用户
  9. 如何去各型MCU的官网上下载正确的数据手册
  10. SaaSpace:2022年用于数据管理的15种最佳免费数据库软件
  11. delphi 2010之如何快速开发原生ActiveX控件
  12. 【无头浏览器】谷歌无头浏览器的几行代码简单设置?
  13. 世界地图中国地图高清版
  14. 作业四:结对编程项目--四则运算
  15. 03_D-H参数表的建立
  16. 上兴远控流量分析报告
  17. Spring IOC/DI和AOP
  18. filebeat报错error pipeline/output.go:100 failed to connect to backoff(async(tcp://xx.xx.xx.xx:))...
  19. JAVA中GUI在Button中设置中文乱码问题
  20. A Survey of Zero-Shot Learning: Settings, Methods, and Applications [reading notes]

热门文章

  1. P3970 [TJOI2014]上升子序列
  2. amazeui学习笔记--js插件(UI增强4)--下拉组件Dropdown
  3. 串口通讯(DMA模式)
  4. 【转】解决“你没有权限访问,请与网络管理员联系”
  5. 130242014021-田富钊-实验一
  6. git使用笔记(二)分支与合并
  7. Spark系列(三)SparkContext分析
  8. Flume学习应用:Java写日志数据到MongoDB
  9. CCBPM 同表单分合流说明
  10. 排序算法之 Slow Sort