No.12 - POJ3259 SPFA求负权值回路 比Floyd快

最短路SPFA算法(解决负权边) 算法思想:实现方法:  建立一个队列,初始时队列里只有起始点,再建立一个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极大值,该点到他本身的路径赋为0)。然后执行松弛操作,用队列里有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加入到队列最后。重复执行直到队列为空。第一种用邻接表实现#include <iostream> #include &lt... 阅读详情

SPFA求负权值回路:

注:SPFA求负权值回路要比Floyd快!\red{注:SPFA求负权值回路要比Floyd快!}注:SPFA求负权值回路要比Floyd快!

// ShellDawn
// POJ3259
// No.12

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#define MM(x) memset(x,0,sizeof(x))
#define MMF(x) memset(x,0x3f,sizeof(x))
using namespace std;

#define maxn 505
int n,m,w;
int E[maxn][maxn][2];
int C[maxn];
int ans[maxn];
int dis[maxn];

bool SPFA(){
    MM(ans);
    MMF(dis);
    queue<int> q;
    q.push(1);
    ans[1]++;
    dis[1] = 0;
    while(!q.empty()){
        int loc = q.front();
        q.pop();
        for(int i=0;i<C[loc];i++){
            int next = E[loc][i][0];
            int v = E[loc][i][1];
            if(dis[loc] + v < dis[next]){
                dis[next] = dis[loc] + v;
                q.push(next);
                ans[next]++;
                if(ans[next] > n) return true;
            }
        }
    }
    return false;
}

int main(){
    //freopen("A.txt","r",stdin);
    int T;
    scanf("%d",&T);
    while(T--){
        MM(C);
        scanf("%d%d%d",&n,&m,&w);
        for(int i=0;i<m;i++){
            int a,b,v;
            scanf("%d%d%d",&a,&b,&v);
            int c = C[a];
            E[a][c][0] = b;
            E[a][c][1] = v;
            C[a] ++;
            c = C[b];
            E[b][c][0] =a;
            E[b][c][1] = v;
            C[b] ++;
        }
        for(int i=0;i<w;i++){
            int a,b,v;
            scanf("%d%d%d",&a,&b,&v);
            int c = C[a];
            E[a][c][0] = b;
            E[a][c][1] = -v;
            C[a] ++;
        }
        if(SPFA()) puts("YES");
        else puts("NO");
    }
    return 0;
}
【POJ/算法】 3259 Wormholes(Bellman-Ford算法, SPFA ,FLoyd算法) Bellman-Ford算法 Bellman-Ford算法的优点是可以发现负圈,缺点是时间复杂度比Dijkstra算法高。而SPFA算法是使用队列优化的Bellman-Ford版本,其在时间复杂度和编程难度上都比其他算法有优势。 Bellman-Ford算法流程分为三个阶段: 第一步:数组Distant[i]记录从源点s到顶点i的路径长度,初始化数组Distant[n]为INF, Dis... 阅读详情

相关推荐

【HDU/算法】最短路问题 杭电OJ 2544 (Dijkstra,Dijkstra+priority_queue,Floyd,Bellman_ford,SPFA)

最短路径问题是图论中很重要的问题。 解决最短路径几个经典的算法 1、Dijkstra算法 单源最短路径(贪心),还有用 priority_queue 进行优化的 Dijkstra 算法。 2、bellman-ford算法 例题:【ACM】POJ 3259 Wormholes 允许负权边的单源最短路径算法 优点:可以发现负圈。缺点,时间复杂度比Dijkstra算法高。 算法流程: ...

( :3 ) 719

负圈,负权,负权回路,DAG

DAG:有向无环图 负圈:总长度小于0的有向环路。 负权:例如有3个点编号1,2,3,任意两点之间都存在一条边,那么1,2,3存在一个环。(这里环的定义是不太严谨的,有向边的话需要与圈区分好)每条边都有一个边权。我们令g(i,j)表示i,j之间的边的权值。当g(1,2)+g(2,3)+g(3,1)<0时是负权环。当g(1,2)+g(2,3)+g(3,1)>0时是正权环。 负权回路...

weixin_30609287的博客 1430

泥炭Clip1耳夹耳机评测:14.2mm动圈与蓝牙5.4如何定义300元档音质与连接新标杆

真无线立体声(TWS)耳机通过蓝牙技术实现无线音频传输,其核心在于声学单元、无线协议与佩戴设计的协同。发声单元尺寸直接影响声音的频响范围与动态表现,而蓝牙版本则决定了连接的稳定性、功耗与延迟水平。对于追求高性价比与实用体验的用户而言,这些基础技术指标直接关系到日常通勤、运动健身乃至移动游戏等场景下的使用满意度。泥炭Clip1耳夹式耳机正是基于这一逻辑,通过搭载14.2mm超大动圈单元与最新的蓝牙5.4协议,在硬件层面构建了显著优势。其大尺寸动圈旨在提升低频下潜与声场表现,而蓝牙5.4则致力于提供更稳定、低功

weixin_33768481的博客 422

Bellman-Ford算法(限制边权的最短路、负权回路)

算法思想 Bellman-Ford算法构造一个最短路径长度数组序列dist1[u], dist2[u], …, distn-1[u]。其中: dist1[u]为从源点v到终点u的只经过一条边的最短路径长度,并有dist1[u]=Edge[v][u]; dist2[u]为从源点v最多经过两条边到达终点u的最短路径长度; dist3[u]为从源点v出发最多经过不构成负权值回路的三条边到达终点u的最短路径长度; …… distn-1[u]为从源点v出发最多经过不构成负权值回路的n-1...

qq_53286237的博客 961

跟着团子学SAP EPPM:项目管理常见的集成场景(PPM\PS\MS Project)

在SAP的EPPM解决方案中,针对企业战略级别的投资组合管理首先是定义合适的投资组合的层级结构,在投资组合下可以通过不同维度去定义投资篮(Portofolio Bucket)进行层层拆分,在最下层级的投资篮下可以分配明细的投资项(Portofolio Item),投资项可以是独立的一个一个具体执行的项目,也可以是单纯的一次服务等等。 今天主要聚焦在投资项的维度展开讲一下在SAP中投资项常见的几种集成模式: 集成场景1:使用PPM中的Project Management进行项目管理 第一个场景是在创建投资项

Lucas1211的博客 4139

手把手教你用Simulink搭建IEEE33节点配电网模型(附赠两本电力系统书籍)

本文详细介绍了如何使用Simulink搭建IEEE33节点配电网模型,涵盖从基础配置到高级应用的完整流程。通过MATLAB脚本自动化参数注入、监测系统部署和典型应用场景实战,帮助读者快速掌握配电仿真模型的核心技术。附赠两本电力系统经典书籍资源,助力深入学习与研究。

weixin_29073241的博客 247

Wormholes ---Bellman-Ford算法 最短路径 负权值回路判断 (POJ3259)

Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 64151   Accepted: 23944 Description While exploring his many farms, Farmer John has discovered a number of amaz...

SYITwin的博客 636

Orbbec-Gemini-335 深度相机 Python SDK 编译与配置全记录(Windows 环境)

本篇博客将围绕 Windows 系统下 Orbbec SDK 的 Python 配置与编译过程进行详细说明,主要使用的是官方提供的 pyorbbecsdk Python wrapper 项目以及 Orbbec SDK V2 Python Wrapper 配置指南,并记录了安装与配置过程中遇到的若干问题及解决办法。

Junseer的博客 1965

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

chen_zan_yu_的博客 488

Matlab Copula函数实战:从金融风控到数据建模的5个应用场景

本文深入探讨了Matlab Copula函数在金融风控与数据建模中的五大实战应用场景,包括投资组合风险价值计算、信用违约相关性建模、跨市场套利策略优化等。通过具体代码示例和数据分析,展示了Copula模型在捕捉复杂依赖关系方面的优势,为金融风险管理和量化分析提供实用工具。

weixin_29090677的博客 425

【SWPUCTF 2021 新生赛】hardrce

对每个字符的ASCII值进行按位取反操作(这种要进行自增马进行绕过。

XiaoHei的博客 460

POJ 3259 Wormholes(Floyd判负环)

  题目链接:http://poj.org/problem?id=3259        题意是有一个n*n的地图,输入m条无向边,输入k条单向的虫洞(它的权值是负的,因为可以让时间倒流...),然后问能不能从一个点出发转一圈后回到这个点的时间是负的...也就是让时间倒流...        直接用floyd把每个边都更新一下,然后看有没有pre[i][i](自己到自己)的权值是负的就好了....

Charles_Zaqdt的博客 617

目标检测YOLO实战应用案例100讲-【目标检测】缺陷检测(二)

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。在金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。

qq_36130719的博客 728

POJ 3259 Wormholes(spfa判负环)

  题目链接:http://poj.org/problem?id=3259        题意是有n个点,m条边,k个虫洞(权值为负),输入完m条无向边后输入k条有向边,问能不能找到一个点,从这个点出发,最后回到这个点的时候权值是负的(时光倒流)。        首先这个可以用Floyd去跑一遍,然后遍历每个点看看有没有能得到负权的点,想看Floyd做法的可以看看这篇博客:POJ 3259 ...

Charles_Zaqdt的博客 319

HyperLynx(十四)高级分析技术

如果没有查找到该模型,可使用菜单命令“Setup”→“Options”→“Directories”,打开“Set Directories”对话框,单击“Edit”按钮,在“Select Directories for IC-Model Files”对话框中将路径“…在“Assign Models”对话框中的“Port”栏找到“OUTM”端口,在其对应的“Circuit Connection”栏中选择“txout”项。将端口R75连接到“Gnd”。同样,将“EMP”连接到“V”,完成预加重设置。...

小幽余生不加糖 4948

PCB板Gerber文件的理解和制作

Gerber文件是PCB生产的关键文件,主要包括:1)走线层(GTL/GBL);2)阻焊层(GTS/GBS);3)丝印层(GTO/GBO);4)板框层(GMx/GKO);5)钢网层(Gtp/GBp);6)钻孔文件(NCdrillFiles)。其中1-10项和15项钻孔文件必须提供,建议包含11-14项辅助钻孔层。Gerber文件不含过孔属性,需提前在AD中设置过孔盖油。导出步骤包括:导出非机械层、机械层和钻孔层,新版AD可通过"文件->制造输出->GerberFiles"操作

qq_37999850的博客 852

POJ--3259--Wormholes【SPFA判负权值回路】

题意:有n个点,之间有m条双向路径,还有w个虫洞,单向,从一点到另一点需要花费时间,但是有虫洞的话会减少时间,一个人想要走某一条路使得他能碰到过去的自己,问这个图是否能让他实现他的想法。 其实就是判一个图是否存在负权值回路,SPFA可以实现,原理是:如果存在负权值回路,那么从源点到某个顶点的距离就可以无限缩短,因此就会无限入队,所以在SPFA中统计每个顶点的入队次数,如果超过了n个(顶点

阳光照耀圣西罗 847

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ 3259 Wormholes

Wormholes 时间限制: 2000MS 内存限制: 65536K 提交总数: 73026 接受: 27143 描述 在探索他的许多农场时,Farmer John发现了许多令人惊叹的虫洞。虫洞是非常奇特的,因为它是一条单向路径,在您进入虫洞之前的某个时间将您带到目的地!每个FJ的农场包括Ñ(1≤ ñ ≤500)字段方便地编号为1 … Ñ,中号(1≤ 中号 ≤2500)的路径,和w ^(1≤...

weixin_44641254的博客 207

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

基本算法floyd的poj水题推荐

首先回忆一下floyd的数据结构: floyd是最直观的最短路径算法,只需要图数组即可。 图数组chart[][]; 回顾一下floyd的基本过程: for(int i=1;i<=v;i++){ for(int j=1;j<=v;j++){ for(int k=1;k<=v;k++){ if(chart[j][k]>chart[j][i]+chart[i][k]){ c

lwtdzh999的博客 1290

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

poj3259Wormholes (Bellman_Ford/SPFA/Floyed算法判断是否存在负环)

题目链接:http://poj.org/problem?id=3259 题目大意:一个图,有n个顶点,其中有m条边是双向的且权值为为正,w条边是单向的且权值为负,判断途中是否存在负环,如果有输出YES,没有输出NO。 Sample Input 2 3 3 1 1 2 2 1 3 4 2 3 1 3 1 3 3 2 1 1 2 3 2 3 4 3 1 8 Sample Ou...

weixin_30875157的博客 189

poj 最短路径 汇总

@joy_w的小地盘 最 短路之poj题目汇总 唉,国庆配老同学到处跑,看看熊猫了,kk歌了等等,本来打算的切题好时机啊。。 (打住,偏题了哈。。) 最短路径大体分为2种,单源最短路径和多对顶点之间的最短路径; 导论上一句话写的比较好: 边的权值还可以被解释为其他的某种度量标准,而不一

Cyibing的专栏 1169

基本算法dijkstra的POJ水题推荐

首先转载一个别人归纳的题目集合: 1.poj1062 昂贵的聘礼(中等)     此题是个经典题目;用Dijkstra即可;但是其中的等级处理需要一定的技巧;    要理解好那个等级制度;这个处理好,基本就是裸体Dijkstra; 2 poj1125 Stockbroker Grapevine(基本)    这个是简单Floyd,需要求出的是每对顶点之间的最短路径;    然后找到那个

lwtdzh999的博客 2040

【转】poj 最短路问题分类

【转】poj 最短路问题分类2011-12-03 12:10转载自 程序即人生最终编辑 程序即人生最短路径大体分为2种,单源最短路径和多对顶点之间的最短路径;导论上一句话写的比较好:边的权值还可以被解释为其他的某种度量标准,而不一定是距离。它常常被用来表示时间、费用,罚款,损失或者任何其他沿着一条路线性积累的和我们试图将其最小化的某个量;最短路径还和dp有一定的关系;因为他符合最优子结构和公共子问

Booky的专栏 722

POJ图论题~

最短路径大体分为2种,单源最短路径和多对顶点之间的最短路径; 导论上一句话写的比较好: 边的权值还可以被解释为其他的某种度量标准,而不一定是距离。它常常被用来表示时间、费用,罚款,损失或者任何其他沿着一条路线性积累的和我们试图将其最小化的某个量; 最短路径还和dp有一定的关系;因为他符合最优子结构和公共子问题; 例如Floyd就是一种动归的解法; 还能解决一些最大最小流有关的问题; 常

Sky_Gr_OI 641

POJ中最短路问题汇总【转】

求最短路基本的算法: 1>Dijkstra算法 2>Bellman-Ford算法 3>Floyd算法 4>Floyd-Warshall算法 5>Johnson算法 6>A*算法 题目: 1.poj1062昂贵的聘礼(中等)    此题是个经典题目;用Dijkstra即可;但是其中的等级处理需要一定的技巧;   要理解好那个等级制度;这个处理好,基本就是裸体Dijkstra;

_Aka 735
上一篇: No.11 - POJ3268 SPFA 最短路
下一篇: No.13 - POJ2570 状压求字符串并集
ShellDawn
博客等级 码龄10年 75粉丝 756原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值