poj3259 Wormholes(SPFA判环/SPFA判负环)

POJ 3259 Wormholes 【Floyd判断负环】 POJ 3259 Wormholes 【Floyd判断负环】 题目大意: FJ 有 N 块田野【编号 1…n】田野间有 M 条路【双向】 同时有 W 个虫洞,通过这个虫洞到达另一个田野,可以回到一段时间以前【单向】 问:FJ 是否能在田地中遇到以前的自己 具体思路: 双向路为正权,单向路为负权,判断图中是否存在负环,存在则可以遇到以前的自己,至于为什么上一篇博客有解释 可用spfa求解,但是spf... 阅读详情

题目

T(T<=5)组样例,每次给出N(N<=500)个点,

M(M<=2500)条正权双向边,W(W<=200)条负权单向边,问是否存在负权环

思路来源

https://blog.youkuaiyun.com/forever_dreams/article/details/81161527

题解

两种bfs版SPFA判负环

①最短路更新一个点不会超过n次,如果一个点入队次数大于n,必有负环,

但最坏情况下,一个长度为n的环,每个负权环上的点都需被遍历n次,转n圈

 

②单源最短路,从源点到每个点的路径的长度不会超过n,如果有路径长于n,必有负环

该方法在长度为n的环下比①优,出现一个长度为n的点即跳出,转1圈

 

环长不大的时候,感觉二者差不多

dfs版SPFA的也可判环,但没环时容易TLE

代码1

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define fi first
#define se second
typedef pair<int,int> P;
const int INF=0x3f3f3f3f;
const int N=505;
int n,m,p,u,v,w;
int dis[N],in[N];
vector<P>E[N];
bool vis[N];
void add(int u,int v,int w)
{
	E[u].push_back(P(v,w));
}
bool spfa(int s)//a-b>=c,add(b,a,c)
{
	dis[s]=0;
	queue<int>q;
	q.push(s);	
	vis[s]=1;in[s]++;//当前在队列中 
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=0;i<E[u].size();++i)
		{
			int v=E[u][i].fi,w=E[u][i].se;
			if(dis[v]>dis[u]+w)
			{
				dis[v]=dis[u]+w;
				if(!vis[v])
				{
					q.push(v);
					vis[v]=1;in[v]++;
					if(in[v]>n)return 1;
				}
			}
		}
	}
	return 0; 
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d",&n,&m,&p);
		for(int i=1;i<=n;++i)
		{
			dis[i]=INF;
			vis[i]=in[i]=0;
			E[i].clear();
		}
		for(int i=1;i<=m;++i)
		{
			scanf("%d%d%d",&u,&v,&w);
			add(u,v,w);add(v,u,w);
		}
		for(int i=1;i<=p;++i)
		{
			scanf("%d%d%d",&u,&v,&w);
			add(u,v,-w);
		}
		puts(spfa(1)?"YES":"NO");
 	} 
	return 0;
} 

代码2(更优)

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
#define fi first
#define se second
typedef pair<int,int> P;
const int INF=0x3f3f3f3f;
const int N=505;
int n,m,p,u,v,w;
int dis[N],cnt[N];
vector<P>E[N];
bool vis[N];
void add(int u,int v,int w)
{
	E[u].push_back(P(v,w));
}
bool spfa(int s)//a-b>=c,add(b,a,c)
{
	dis[s]=0;
	queue<int>q;
	q.push(s);	
	vis[s]=1;cnt[s]=1;//当前在队列中 
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		vis[u]=0;
		for(int i=0;i<E[u].size();++i)
		{
			int v=E[u][i].fi,w=E[u][i].se;
			if(dis[v]>dis[u]+w)
			{
				dis[v]=dis[u]+w;
				cnt[v]=cnt[u]+1;
				if(cnt[v]>n)return 1;
				if(!vis[v])
				{
					q.push(v);
					vis[v]=1;
				}
			}
		}
	}
	return 0; 
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d",&n,&m,&p);
		for(int i=1;i<=n;++i)
		{
			dis[i]=INF;
			vis[i]=cnt[i]=0;
			E[i].clear();
		}
		for(int i=1;i<=m;++i)
		{
			scanf("%d%d%d",&u,&v,&w);
			add(u,v,w);add(v,u,w);
		}
		for(int i=1;i<=p;++i)
		{
			scanf("%d%d%d",&u,&v,&w);
			add(u,v,-w);
		}
		puts(spfa(1)?"YES":"NO");
 	} 
	return 0;
} 

 

R语言笔记三:矩阵、数组、列表和数据框 1.矩阵        矩阵是二维的,需要有行和列。向量是一维的。        在R软件中,矩阵是有维数的向量,这里的矩阵元素可以是数值型、字符型或者逻辑型,但是每个元素必须拥有相同的模式,这个和向量一致。 (1)创建矩阵: m <- matrix(1:20,4,5) 行数和列数的分配必须满足分配条件。若分配的行列过大,分配的元素不足够,则报错。 m <- 阅读详情

相关推荐

完整版:ultralytics下运行yoloworld并训练

本文介绍了Ultralytics YOLO环境的快速配置与使用流程:1) 通过conda创建Python 3.9环境并安装依赖包;2) 配置中科大镜像源加速安装PyTorch和Ultralytics;3) 准备YOLO格式数据集并修改data.yaml配置文件;4) 提供模型预测、训练和验证的常用指令,包括predict/train/val等命令参数设置。文章还包含CLIP模型下载、权重文件获取以及本地安装等注意事项,完整覆盖了从环境搭建到模型部署的全过程。

weixin_50209871的博客 1344

poj3259 Wormholes spfa/Floyd判负环

题意: 给你NN个点,M+WM+W条有向边,并且给你M+WM+W条边的起点uu,终点vv,和权值ww。其中MM条边的权值为正,WW条边的权值为负。 让你判断所给的图是否含有负权环。 要注意题目给了多组数据,一定要初始化数据。(无限次死在这儿 题目大致有两种做法:Floyd判断负权环 或者 spfa判断负权环。 spfa真的是不好调,在一些傻逼的地方卡了好久。 给自己挖个坑。Floyd还没

Ksyer_的博客 402

富芮坤FR801xH蓝牙协议栈启动流程和notify实现温度数据主动上传

文章目录一、蓝牙协议栈启动流程1.1 初始化代码1.2 初始化流程1.3 回调函数里的初始化二、notify实现2.1 notify介绍2.2 notify实现2.3.1 定义数据2.3.2 获取连接号conidx2.3.3 gatt_notification函数的使用三、notify温度上传测试3.1 蓝牙调试工具3.2 蓝牙调试器设置3.3 测试结果四、参考链接   基于sdk开发的好处是方便项目的快速落地,现在用的是SDK里面的源文件,目前只是学习FR801xH芯片的特性,裁剪这个SDK需要点时间,

weixin_43810563的博客 4318

POJ 3259 Wormholes(Floyd/Bellman_ford/SPFA 判负环)

题目链接:http://poj.org/problem?id=3259 解题思路:只要图中存在某个圈,沿着这个圈走一圈之后时间能够回退(即负环),那么一定可以完成题目所说之事。 早期floyd做法 做法判断是否有节点到自身的最短路小于0 1829ms ///*** Floyed 法求任意两点最短路 #include<iostream> #include<algorit...

shadiao.的博客 197

离心泵级间导叶的设计计算

离心泵级间导叶的设计计算高速离心泵级间流道的作用是将第一级复合叶轮流出的高速液流收集起来并送入第二级复合叶轮。级间流道的设计应考虑降低液体的流速,实现动能向压力能转化,减小液体的水力损失。级间流道主要有蜗壳形流道和导叶两种结构形...

cqzc55322的博客 2565

深度学习【46】pix2pixHD

英伟达的pix2pixHD,能够合成高清的2048*1024图片,简直振奋人心。pix2pixHD是我之前介绍过的pix2pix的改进版本,使用多由粗到精的G网络和多尺度D网络(每个D网络都是用了pix2pix中同样的patch技术)。论文一开始用pix2pix尝试合成更高分辨率的图片,但发现效果不好,训练也很不稳定。所以就对pix2pix进行了一顿魔改。我们来看看他们是怎么改进的。由粗到精的G网络

DCD_LIN的博客 1万+

poj3259 Wormholes --- bellman/spfa判负环

又写了个bellman模板一直RE求解啊。。。 #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #define ll __int64 #define mod 1000000007 using namespace

Unknown 674

深入解析Incapsula reese84的生成机制与绕过策略

本文深入解析了Incapsula reese84的生成机制与绕过策略。reese84是一种基于客户端JavaScript挑战的Web安全防护,通过动态算法收集浏览器指纹并生成令牌Cookie。文章详细拆解了其两步验证流程,并提供了使用无头浏览器、逆向JS模拟请求以及Token维护等实战绕过方法,帮助开发者和安全研究人员应对自动化访问拦截。

weixin_29256771的博客 443

POJ3259 Wormholes 【spfa判负环】

题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit:2000MS Memory Limit:65536K Total Submissions:75598 Accepted:28136 Description While exploring his ma...

a6334167的博客 153

seurat v5更新及样本整合方法

1 Seurat 对象和 Assay 类发生了变化:支持更多种类的检测和数据类型,包括磁盘上的矩阵。引入了分层结构来存储数据,例如原始计数、标准化数据和 z 得分/方差稳定数据。可以使用 $ 访问器或 LayerData 函数来访问数据。现有的 Seurat v4 函数和工作流程仍可在 v5 中使用。2 整合工作流程发生了变化:简化了整合流程,提高了速度和内存效率。整合结果与 v4 工作流程略有不同,但用户仍可在 v5 中运行 v4 整合工作流程。

hx2024的博客 2683

光学材料仿真软件:FDTD Solutions_(4).材料属性的定义与应用

在光学材料仿真软件中,材料属性的定义和应用是至关重要的一步。正确地定义材料属性可以确保仿真结果的准确性和可靠性。本节将详细介绍如何在FDTD Solutions中定义和应用不同的材料属性,包括介质材料、金属材料、色散材料等,并提供具体的代码示例和数据样例。介质材料是光学仿真中最常见的材料类型之一。在FDTD Solutions中,可以通过多种方式定义介质材料,包括使用预定义的材料库、自定义材料参数或导入材料数据文件。FDTD Solutions内置了一个丰富的材料库,包含了许多常用材料的光学性质。

kkchenjj的博客 1400

SPFA(判负环) - Wormholes - POJ 3259

SPFA判负环-Wormholes POJ - 3259 题目: 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...

njuptACMcxk的博客 283

【如何利用扩展卡尔曼滤波解决跟踪毫米波雷达目标】

笛卡尔坐标系(非极坐标系):使用两个垂直的轴(通常是x轴和y轴)来确定一个点的位置。你沿着这两个轴移动确定的距离来找到这个点。极坐标系:使用一个角度和一个距离来确定一个点的位置。首先,你转到一个特定的方向(角度),然后沿着那个方向移动确定的距离来找到这个点。希望这个例子能帮助你理解两种坐标系的基本概念!

小秋 AI SLAM 入门实战教程 883

poj3259 Wormholes(floyd||spfa判断负环)

http://poj.org/problem?id=3259 题意:n个点,m个正权边,w个负权边,正权边为双向,负权边为单向,判断是否有负环。 思路:首先知道何为负环,例如有3个点编号1,2,3,任意两点之间都存在一条边,那么1,2,3存在一个环,其上权值和为负即为负环。floyd和spfa两种做法,floyd法卡的时间紧,不但要把min改成普通判断,输出也不能在函数内。整体来说

Iguodala的博客 961

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

POJ - Wormholes(Spfa判负环)

题目链接:http://poj.org/problem?id=3259Time Limit:2000MSMemory Limit:65536K Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very pe...

ityanger的技术栈 2753

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ 3259 Wormholes(bellman_ford、Floyd、SPFA判断负环)

POJ 3259 http://poj.org/problem?id=3259 题意: 农夫 FJ 有 N 块田地【编号 1...n】 (1<=N<=500) 田地间有 M 条路径 【双向】(1<= M <= 2500) 同时有 W 个孔洞,可以回到以前的一个时间点【单向】(1<= W <=200) 问:FJ 是否能在田地中遇到以前的自己 算法:bel...

橘嘉禾 282

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

POJ3259 Wormholes —— spfa求负环

题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit:2000MS Memory Limit:65536K Total Submissions:55082 Accepted:20543 Description While exploring hi...

alince20008的博客 134

POJ 3259 Wormholes (最短路 SPFA 判断负环)

POJ 3259 Wormholes (最短路 SPFA 判断负环) 题意: N个农场旅行 有M个路径 和 W个虫洞。 有M行 普通路径 S ,E, T。表示从地点S(E)到地点E(S)的时间为T。接着有W行为虫洞。普通路径是双向的, 虫洞是单向,且为负值 思路:既有虫洞又有普通道路,把虫洞看成是一条负权路,问题就转化成 求一个图中是否存在负权回路 。 定义一个数组记录入队次数,每个元素 入队次数是否小于 N 。

jianjun的专栏 518

POJ 3259-Wormholes-SPFA判负环

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 i...

Nothing_but_Fight的博客 260

Wormholes(判断负环,spfa)

题目:添加链接描述 Description: F组数据, 输入n, m, w,表示n块田地, m个田与田之间的关系,w个虫洞,从一块田到达另一块田需要花一定时间, 穿过虫洞时时间会倒流,问是否能够回到出发前的时间 Solution: 判断是否存在负环,若存在则一定能够回去。 Code: #include<iostream> #include<algorithm> #in...

Tw_light的博客 256

POJ 3259 Wormholes(spfa 判断负环)

有 n 个点,m 条无向边,t 条有向边,判断图是否存在负环 const int N=1e4+5; int n,m,t; int i,j,k; int head[N],all=0; int d[N]; //点 i 到起点的距离 int cnt[N]; //点 i 的入队次数 bool vis[N]; struct node { int to,next; int w; }G[N]; void add(int u,int v,...

C_Dreamy的博客 448

poj3259 Wormholes(spfa判负环)

题意:有n个农场,m条无向的路,边权为时间(正),w个有向的虫洞(边权为时间(负)),问John能够回到过去。 思路:能够回到过去,即是够能找到了一点,从这点出发形成负环,若能就能回到过去,不能就不能回到过去。 AC Code: #include<queue> #include<iostream> #include<cstring> #include&l...

一身清贫怎敢入繁华 323

poj 3259 Wormholes spfa判断负环 解题报告

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 a

小夥的博客 772

POJ--3259 Wormholes (SPFA判负环)

题目电波 3259 Wormholes #include<iostream> #include<cstring> #include<algorithm> #include<queue> #include<stdio.h> using namespace std; #define maxn ...

dianzanji4884的博客 108

POJ 3259 Wormholes(最短路径,求负环)

POJ 3259 Wormholes(最短路径,求负环) 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 de...

dipinzhu4111的博客 167

POJ #3259 Wormholes 判负环 SPFA

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 d...

aibin6833的博客 158
上一篇: hdu1599 find the mincost route && fzu2090 旅行社的烦恼 (floyd 无向图代价最小环的代价 及 环的个数)
下一篇: hdu2363 Cycling(枚举或二分+最短路)
小衣同学
博客等级 码龄9年 1444粉丝 995原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小衣同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值