Bellman_ford poj 3259

【代码超详解】POJ 3259 虫洞(Bellman-Ford算法 · 板子题) 一、题目描述 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 76233 Accepted: 28356(2019/10/22) Description 当走访自己的农场时,农夫 John(下称 FJ)发现了许多神奇的虫洞。虫洞是一个很奇怪的东西,因为它是一个能够将你送到一个时间位于你进入虫洞之前的目的地... 阅读详情

这几天搞差分约束,里面提到Bellman_ford的三角不等式,对Bellman_ford总结一下。。。

Bellman_ford与dijkstra都是求单源多点路径长度。但dijkstra不能带有负权值。关于dijkstra参考:http://blog.youkuaiyun.com/bill_ming/article/details/7578037   所以当负权值时就用到了Bellman_ford啦。。。

参考:http://blog.sina.com.cn/s/blog_6803426101014l1v.html

摘自百度百科:http://baike.baidu.com/view/1481053.htm

假设存在最短路径的话,那么我们只要将这条最短路径沿着权值为负的环路在绕一圈,那么这条最短路径的权值就会减少了,所以不存在最短的路径,因为路径的最小值为负无穷

一般形式:

typedef struct Edge
{
    int u,v,w;
} edge[N];
bool Bellman_ford()
{
    //第一步初始化:
    for(int i = 1; i <= n; i++)
        dis[i] = MAX;
    dis[s] = 0;
    //第二步循环求解:
    for(int i = 1; i < n; i++)  // 除源s外 n-1个节点
        for(int j = 1; j <= edgenum; j++)
            if(dis [ edge[j].v ] > dis[ edge[j].u ] + edge[j].w )
            {
                dis [ edge[j].v ] = dis[ edge[j].u ] + edge[j].w;
            }
 //如果某次循环,没有更新源点到任何顶点的dis,那提前结束
    for(int i = 1; i < n; i++)  // 除源s外 n-1个节点
    {
        bool flag = false;
        for(int j = 1; j <= edgenum; j++)
            if(dis [ edge[j].v ] > dis[ edge[j].u ] + edge[j].w )
            {
                dis [ edge[j].v ] = dis[ edge[j].u ] + edge[j].w;
                flag = true;
            }
        if( !flag )
        {
            break;
        }

    }

//第三步:判断是否存在负环

    for(int i = 1; i <= edgenum; i++)
        if(dis[ edge[i].v ] > dis[ edge[i].u ] + edge[i].w )
            return false;
    return true;
}


//zhaomingming	3259	Accepted	360K	204MS	C++	1558B	2012-06-03 21:32:02
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 10010;
const int INF = 999999;
struct  Edge
{
    int u;
    int v;
    int t;
} ;
Edge edge[N];
int num;
int n,m,w;
int dis[N] ;
bool Bellman_ford()
{
    for(int i = 1; i <= n; i ++)
    {
        dis[i] = INF;
    }
    bool flag ;
    for(int i = 1; i < n; i++)
    {
        flag = false;
        for(int j = 1; j <= num; j++)
        {
            if(dis[edge[j].v] > dis[edge[j].u] + edge[j].t)
            {
                dis[ edge[j].v ] = dis[edge[j].u] + edge[j].t;
                flag = true;
            }
        }
        if( !flag )
            break;
    }
    for(int j = 1; j <= num; j++)
        if(dis[ edge[j].v ] > dis[edge[j].u] + edge[j].t)
            return true;
    return false;

}
int main()
{
    int F,a,b,c;

    int tt;
    cin >> F;

    while(F--)
    {
        cin >> n >> m >> w;
        num = 0;
        memset(edge,0,sizeof(edge));
        for(int i = 1; i <= m; i++)
        {
            cin >>a >> b >>c;
            num ++;       //无向图
            edge[num].t = c; 
            edge[num].u = a;
            edge[num].v = b;
            num ++;
            edge[num].t = c;
            edge[num].u = b;
            edge[num].v = a;

        }
        for(int i = 1; i <= w; i++)
        {
            cin >> a  >> b >> tt;
            edge[++num].t = -tt;
            edge[num].u = a;
            edge[num].v = b;
        }
        if( Bellman_ford() )
            cout << "YES\n";
        else
            cout << "NO"<<endl;
    }
    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... 阅读详情

相关推荐

【小白指南】如何将deepseek引入WPS\Word\Excel中去?

如何将deepseek引入WPS\Word\Excel中去?纯小白都能看的懂,一步步操作就能行

2503_90498422的博客 1万+

poj 3259 bellman-ford算法

<br />题目链接:http://poj.org/problem?id=3259<br />题目大意:农场上有一些普通的道路(双向)和虫洞(单向),其中虫洞具有时光倒流的作用,问能否从一个点开始经过一些路和虫洞,最终回到这个点时,回到开始时间之前<br />思路:将虫洞的权值设为负,对每个点用bellman-ford算法进行松弛,判断该点是否能产生负权的距离,如果有一个能,则停止,若最终完成时,都不能,则不能<br />#include<stdio.h> #define max 10000 #defi

Acceptyly的专栏 1365

SORT算法在遮挡下总跟丢?深入OC-SORT源码,拆解其三大创新点如何解决卡尔曼滤波的顽疾

本文深入解析OC-SORT算法如何通过三大创新点解决多目标跟踪中的卡尔曼滤波顽疾。OC-SORT引入在线平滑虚拟轨迹技术(OOS)、观测中心动量匹配机制(OCM)和基于最后观测的轨迹恢复(OCR),显著提升了遮挡场景下的跟踪性能。实验数据显示,相比传统SORT算法,OC-SORT在MOT17数据集上MOTA提升5.7%,遮挡恢复成功率提高64.2%,为Multi-Object Tracking领域带来突破性进展。

weixin_42547431的博客 240

POJ 3259 Wormholes【Bellman-Ford】

http://poj.org/problem?id=3259POJ 3259 Wormholes大意:给出由n个顶点组成的有向图所有边信息,判断该图中是否存在负回路分析: 由于不知道图中的负环路会包含哪些顶点,故自定义一源点s,对于每个顶点k,有一条s到k权值为0的有向边,此时便可初始化s到每个顶点的距离dis[k]为0,然后用Bellman-Ford计算从源点s到各点的単源最短路,若...

a48634331的博客 161

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1920

VisionPro开发实战:CogRecordDisplay控件显示与保存图片的完整流程(附C#代码示例)

本文详细解析了VisionPro开发中CogRecordDisplay控件的图像处理全流程,包括图像加载、显示优化、动态清屏及结果保存等关键操作。通过C#代码示例,展示了如何高效使用该控件进行工业视觉应用开发,特别适合自动化检测系统的开发者参考。

weixin_42523792的博客 276

【POJ 3259 --- Wormholes】Bellman-Ford, 负权回路

【POJ 3259 --- Wormholes】Bellman-Ford, 负权回路 题目来源:点击进入【POJ 3259 — Wormholes】 Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very pecu...

来日浅谈的博客 514

C# 开发 ACS 运动控制系统:从入门到高阶应用实践

起始位置</param>/// <param name="endPos">结束位置</param>/// <param name="maxVelocity">最大速度</param>/// <param name="maxAcceleration">最大加速度</param>/// <param name="maxJerk">最大加加速度

品质生活,极致编程。 2842

poj 3259 Wormholes(Bellman-Ford)

poj 3259 WormholesDescriptionWhile 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

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 900

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

在 SAP S/4HANA 本地部署和私有云里预览 RAP Travel App:为什么 ADT 发不出去,以及如何用 /IWFND/V4_ADMIN 正确发布 OData V4 Service

在SAP S/4HANA On-Premise/Private Cloud环境中,通过ADT直接发布RAP服务的本地端点常会失效。这是因为系统治理策略要求必须通过SAP Gateway Foundation(事务码/IWFND/V4_ADMIN)发布Service Group,而非开发者本机测试模式。本文详解了该流程的必要性:Service Group是OData V4服务的发布单元,涉及后端登记(/IWBEP/V4_ADMIN)和前端发布(/IWFND/V4_ADMIN)两个环节。提供了从ADT跳转SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 269

poj 3259 bellman-ford判断是否存在负权回路

// // main.cpp // poj3259 // // Created by Fangpin on 15/5/28. // Copyright (c) 2015年 FangPin. All rights reserved. // #include #include #include #include #include using namespace std; int g

方品 1063

YOLO项目从零开始:超详细运行教程(图文保姆级教学)

至此,我们已经完整跑通了YOLO项目的安装与启动流程,无论你是零基础小白还是刚入门的AI新兵,只要按部就班操作,也能轻松实现目标检测项目的落地。

一键难忘的博客 4800

poj3259(Bellman_ford)

http://poj.org/problem?id=3259   Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20180 Accepted: 7159 Description While exploring his many farms, Farmer John has disc

ZhouRush 583

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

poj3259 Bellman_Ford

/** * poj3259 Bellman-Ford * 这个题最开始的时候有点钻牛角尖了,只记得Bellman_Ford是单源,而这个题并没有指定源是哪个,就用了Floyd,结果不对 * 想了下,Floyd好像并没有负向环路判断的功能,而这个题只是要检测负向环路,起点在哪里根本就无所谓,选一个根本都不存在的起点都可以 * 于是果断改用BF了 */ #include int f; i

northsnow_bupt的专栏 425

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

poj 3259 最短路判负环 spfa算法和Bellman_ford算法

题目:http://poj.org/problem?id=3259 题意: 有个人在一个图上旅行,当它从一点出发后,可能会经过一些虫洞边,然后时光倒流,回到原点,看到自己,看了好久样例一才看清题意,他必须要看到“自己”,也就是要有个负环回路,所以这就是个求负环回路的问题 分析: spfa算法和Bellman_ford算法都可以 spfs代码: #include #include

01的世界 588

poj 3259 Wormholes(bellman-ford判断负环)

题目链接:http://poj.org/problem?id=3259 题目就是问你能否回到原点而且时间还倒回去了。题目中有些路中有单向的虫洞能让时间回到过去 所以只要将虫洞这条边的权值赋为负然后再判断有没有负环就行了。 #include <iostream> #include <cstring> using namespace std; con...

awow80285的博客 185

【题解】Wormholes POJ - 3259 (Bellman-Ford判断负环)⭐⭐⭐

【题解】Wormholes POJ - 3259 ⭐⭐⭐ 农夫约翰在探索他的许多农场,发现了一些惊人的虫洞。虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1…N,之间有M(1≤M≤2500)条路径,W(1≤W≤200)个虫洞。FJ作为一个狂热的时间旅行的爱好者,他要做到以下几点:开始在一个区域,通过一些路径和虫洞旅行,他要回到最开时出发的...

Suprit's blog 764

POJ No 3259 Wormholes Bellman-Ford 判断是否存在负图

POJ No 3259 Wormholes Bellman-Ford 判断是否存在负图 题目:http://poj.org/problem?id=3259 题意:主要就是构造图, 然后判断,是否存在负图,可以回到原点 /* 2 3 3 1 //N, M, W 1 2 2 1 3 4 2 3 1 3 1 3 ...

豆子 207

POJ.3259 Wormholes , Bellman-Ford , 找负权环

链接地址:http://poj.org/problem?id=3259 大意: N (1 ≤ N ≤ 500) 总共N个点(编号1..N) M (1 ≤ M ≤ 2500)  M条双向边  W (1 ≤ W ≤ 200) wormholes.  W条单向负权边 (不知道 “虫洞”是神马的童鞋 百度~) 问从某个点开始走,能否回到过去。能就输出“YES”,否则输出“NO”。

天亮说晚安 1904

POJ3259 Wormholes Bellman-Ford C语言

题目:http://poj.org/problem?id=3259 题目大意:有F个fields,N条正常的路径,W个虫洞,走正常路径耗时,走虫洞减时。要从原点走一条回路,满足再回到原点时所用时间和小于0 思路:Bellman-Ford判断从源点可达的负权回路 算法:Bellman-Ford 提交情况:WA n次, AC 1次 总结:正常路径是双向的,虫洞是单向的。所以最多一共...

weixin_30456039的博客 98

【原创】POJ 3259 Wormholes(Bellman-Ford) && 简介Bellman-Ford算法

【原创】POJ 3259 Wormholes(Bellman-Ford) && 简介Bellman-Ford算法 【原创】 题目大意 John有N个农场,一共有M条边,在农场上出现了W个虫洞(W是一条边),其中M是双向普通边,W是单向虫洞边。John穿行于农场之间每经过一条边(S到E)的时间为+T,每经过虫洞会时间倒流,经过...

swallowblank的博客 200

POJ 3259 Wormholes Bellman-Ford找负环

题目来源:POJ 3259 Wormholes 题意:某人想回到过去 输入有2中类型的边 一种是正的 并且是双向的 另外一种是负的 是单向的 可以回到过去就输出YES 否则NO 思路:和UVa 558差不多 如果存在负环就可以通过这个负环一直无限时光倒流 找负环用SPFA或者Bellman-Ford #include #include #include using namespace

嗯。 1239

POJ 3259 Wormholes(Bellman-Ford)

题目网址:http://poj.org/problem?id=3259 题目: Wormholes Time Limit:2000MS Memory Limit:65536K Total Submissions:52198 Accepted:19426 Description While exploring his m...

weixin_30325793的博客 89
上一篇: 调用字体通用对话框来改变文本框中的文字的字体 碉堡了啊,收藏
下一篇: IplImage中的imageData
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值