1、题目类型:图论、最短路径、Bellman-Ford算法。

2、解题思路:(1)根据输入记录所有的边,其中无向边转换为有向边记录;(2)Bellman-Ford算法松弛所有的边,寻找是否存在负圈。

3、注意事项:注意Mov[]数组的大小。

4、实现方法:

#include<iostream>
using namespace std;
#define Maxn 510
#define Maxw 6000
#define INF 99999

struct TMove{
int s,e,t;
};
TMove Mov[Maxw];
int n,m,w,flag,cnt;

void Bellman_ford()
{
int i,j,start,end,time;
double d[Maxn];
for (i=0;i<n;i++)
d[i]=INF;
d[0]=0;
for (i=1;i<n;i++)
{
for (j=0;j<cnt;j++)
{
start=Mov[j].s;
end=Mov[j].e;
time=Mov[j].t;
if (d[end]>d[start]+time)
d[end]=d[start]+time;
}
}
for (j=0;j<cnt;j++)
{
start=Mov[j].s;
end=Mov[j].e;
time=Mov[j].t;
if (d[end]>d[start]+time)
{
flag=1;
return;
}
}
}

int main()
{
int i,f,s,e,t;
cin>>f;
while(f--)
{
cin>>n>>m>>w;
memset(Mov,0,sizeof(Mov));
flag=0,cnt=0;
for(i=0;i<m;i++)
{
cin>>s>>e>>t;
s--,e--;
Mov[cnt].s=s;
Mov[cnt].e=e;
Mov[cnt].t=t;
cnt++;
Mov[cnt].s=e;
Mov[cnt].e=s;
Mov[cnt].t=t;
cnt++;
}
for(i=0;i<w;i++)
{
cin>>s>>e>>t;
s--,e--;
Mov[cnt].s=s;
Mov[cnt].e=e;
Mov[cnt].t=-t;
cnt++;
}
Bellman_ford();
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 1;
}

转载于:https://www.cnblogs.com/yongze103/archive/2010/08/11/1797468.html

Wormholes--POJ 3259相关推荐

  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或spfa算法,判断有向图中是否存在负环)

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

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

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

  7. POJ 3259 Wormholes SPFA判负环

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

  8. POJ 3259 SPFA

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

  9. poj 3259 时光穿梭问题 bellman_ford算法

    题意:有n个空地,有m条双向大路,w条时光隧道单向路.问能否回到过去? 思路:判断是否有负环存在,如果有负环存在那么就可以一直小就可以回到过去了 创建源顶点 V到其他顶点的距离d 初始为INF d[1 ...

  10. 最短路专题(不完整)

    参考文章 文章目录 一.单源最短路 1. Dijkstra(堆优化) 模板 例题 Dijkstra 线段树优化 // 手抄了一遍还是没懂,等我强了再来 2. SPFA 二.全源最短路 Floyd 三. ...

最新文章

  1. 华为正式发布鸿蒙2.0,更新人数太多挤爆服务器,P50也官宣了!
  2. 2018全球最强物联网公司榜单揭晓|20家企业物联网战略大起底!
  3. 聊聊redisson的DelayedQueue
  4. JavaScript中的继承
  5. 大数据为智慧城市建设添砖加瓦
  6. xmm1是什么器件_数字电路实验指导书
  7. spring 事务持久性_项目学生:Spring数据的持久性
  8. python编程输入三个数按大小输出_编程:输入3个数,按从小到大的顺序输出
  9. 用Java+Html+MySQL 实现注册、登录(servlet框架)-(一)
  10. 蓝牙学习笔记(二)——低功耗蓝牙(BLE)的体系结构
  11. ES6中Promise的入门(结合例子)
  12. C++ eof()函数相关应用技巧分享
  13. mac修改了/etc/profile导致所有命令不能用、mac下vim不能使用
  14. 基于java springboot android安卓商城购物平台源码(毕设)
  15. android电影播放器,万能电影播放器2018最新版-万能电影播放器v1.0 安卓版-腾牛安卓网...
  16. 计算机如何安装无线网络适配器,无线网卡驱动怎么安装?电脑无线网卡驱动2种安装方法...
  17. win激活时错误0xc0000022
  18. debian linux 关闭防火墙,debian怎么样关闭防火墙
  19. MSTAR-晨星半导体
  20. 荣耀机试题 2021.04 ~05

热门文章

  1. PHP 6:PHP 基本数据类型
  2. 10个用于处理日期和时间的 Python 库
  3. 南京大学与东南大学计算机学院,南京被“严重低估”的1所大学,拥有8个A+学科,无奈校名太普通...
  4. linux mysql UNSIGNED,关于mysql:MySqlint10-与-int-unsigned-之前的区别
  5. 初识ES-IK分词器的拓展和停用词典
  6. 高仿真的类-ApplicationContextAware
  7. 缓存redis的实现思路
  8. SSM综合练习表结构介绍
  9. 上传文件漏洞防御手段
  10. 多表查询中的一些概念