Wormholes--POJ 3259
1、题目类型:图论、最短路径、Bellman-Ford算法。
2、解题思路:(1)根据输入记录所有的边,其中无向边转换为有向边记录;(2)Bellman-Ford算法松弛所有的边,寻找是否存在负圈。
3、注意事项:注意Mov[]数组的大小。
4、实现方法:
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相关推荐
- POJ 3259 Wormholes(负权环路)
题意: 农夫约翰农场里发现了很多虫洞,他是个超级冒险迷,想利用虫洞回到过去,看再回来的时候能不能看到没有离开之前的自己,农场里有N块地,M条路连接着两块地,W个虫洞,连接两块地的路是双向的,而虫洞是单 ...
- POJ 3259 Wormholes
题目链接 题意 问是否存在负环 AC 因为Dijkstra不能处理带有负边权的图,可以用spfa 和 BellmenFord spfa using namespace std; int inf = 0 ...
- POJ 3259 Wormholes【最短路/SPFA判断负环模板】
农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...
- POJ - 3259 Wormholes(判断负环)
题目链接:点击查看 题意:最短路判断负环 这里介绍三种方法判断负环,分别是spfa,bellman-ford和flyod算法,不过spfa的速度能比bellman-ford的速度慢了接近20倍是出乎 ...
- 【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)
题干: 农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500 ...
- POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)
题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前 ...
- POJ 3259 Wormholes SPFA判负环
思路:SPFA判负环 数组不要开太小-- (后面附一组测试数组) // by SiriusRen #include <queue> #include <cstdio> #inc ...
- POJ 3259 SPFA
这题让我英语太受打击了,题意难懂,读懂题意纸老虎. 算法: 1.题意本质就是判断是否存在负权回路. 2.SPFA,一个点入队大于等于N次,就说明它存在负权回路. View Code #include ...
- poj 3259 时光穿梭问题 bellman_ford算法
题意:有n个空地,有m条双向大路,w条时光隧道单向路.问能否回到过去? 思路:判断是否有负环存在,如果有负环存在那么就可以一直小就可以回到过去了 创建源顶点 V到其他顶点的距离d 初始为INF d[1 ...
- 最短路专题(不完整)
参考文章 文章目录 一.单源最短路 1. Dijkstra(堆优化) 模板 例题 Dijkstra 线段树优化 // 手抄了一遍还是没懂,等我强了再来 2. SPFA 二.全源最短路 Floyd 三. ...
最新文章
- 华为正式发布鸿蒙2.0,更新人数太多挤爆服务器,P50也官宣了!
- 2018全球最强物联网公司榜单揭晓|20家企业物联网战略大起底!
- 聊聊redisson的DelayedQueue
- JavaScript中的继承
- 大数据为智慧城市建设添砖加瓦
- xmm1是什么器件_数字电路实验指导书
- spring 事务持久性_项目学生:Spring数据的持久性
- python编程输入三个数按大小输出_编程:输入3个数,按从小到大的顺序输出
- 用Java+Html+MySQL 实现注册、登录(servlet框架)-(一)
- 蓝牙学习笔记(二)——低功耗蓝牙(BLE)的体系结构
- ES6中Promise的入门(结合例子)
- C++ eof()函数相关应用技巧分享
- mac修改了/etc/profile导致所有命令不能用、mac下vim不能使用
- 基于java springboot android安卓商城购物平台源码(毕设)
- android电影播放器,万能电影播放器2018最新版-万能电影播放器v1.0 安卓版-腾牛安卓网...
- 计算机如何安装无线网络适配器,无线网卡驱动怎么安装?电脑无线网卡驱动2种安装方法...
- win激活时错误0xc0000022
- debian linux 关闭防火墙,debian怎么样关闭防火墙
- MSTAR-晨星半导体
- 荣耀机试题 2021.04 ~05
热门文章
- PHP 6:PHP 基本数据类型
- 10个用于处理日期和时间的 Python 库
- 南京大学与东南大学计算机学院,南京被“严重低估”的1所大学,拥有8个A+学科,无奈校名太普通...
- linux mysql UNSIGNED,关于mysql:MySqlint10-与-int-unsigned-之前的区别
- 初识ES-IK分词器的拓展和停用词典
- 高仿真的类-ApplicationContextAware
- 缓存redis的实现思路
- SSM综合练习表结构介绍
- 上传文件漏洞防御手段
- 多表查询中的一些概念