洛谷P5960 【模板】差分约束算法
传送门
当年崔叔就讲得这个东西,感觉把不等式转化成最短路这个想法就很神奇,今天又回来温习了一下(累了懒得解释了,过几天来补 咕咕咕
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int M=20005;
const int N=5005;
int n,m,tot,head[M],to[M],nex[M],v[M],num[N],dis[N];
bool vis[N];
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
inline void add(int x,int y,int z){++tot;nex[tot]=head[x];head[x]=tot;to[tot]=y;v[tot]=z;
}
inline bool spfa(int s){queue<int>q;q.push(s);for(int i=1;i<=n;i++) vis[i]=0;vis[s]=1,dis[s]=0;while(!q.empty()){int dmf=q.front();q.pop(); for(int i=head[dmf];i;i=nex[i]){int lgr=to[i];if(dis[lgr]>dis[dmf]+v[i]){dis[lgr]=dis[dmf]+v[i];if(!vis[lgr]){vis[lgr]=1;num[lgr]++;if(num[lgr]>=n) return 0;q.push(lgr);}}} vis[dmf]=0;}return 1;
}
int main(){n=read();m=read();for(int i=1;i<=n;i++) add(0,i,0),dis[i]=2147483640,num[i]=0;for(int i=1;i<=m;i++){int x,y,z;x=read();y=read();z=read(); add(y,x,z);}if(spfa(0)){for(int i=1;i<=n;i++) printf("%d ",dis[i]);}else printf("NO");return 0;
}
洛谷P5960 【模板】差分约束算法相关推荐
- 解题报告:P5960 【模板】差分约束算法(及常用技巧)
P5960 [模板]差分约束算法 差分约束系统 给出 n 个变量和 m 个约束条件,形如 xi−xj≤ckx_i - x_j \leq c_kxi−xj≤ck,你需要求出一组解,使得所有约束条件 ...
- 【模板】差分约束算法
[模板]差分约束算法 题意: 题解: 模板题 算法讲解 给出一组包含 m 个不等式,有 n 个未知数.求任意一组满足这个不等式组的解,或判定无解. 连边之后跑最短路,保证每个连通块都没有负环即可. 也 ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
- 【图论】差分约束算法详解
一.前言 在介绍差分约束之前,我们首先需要知道差分约束是用来解决什么问题的:差分约束是一个用来解决形如 X<=Y+c 的二元不等式组的可行解的一个算法.在高中数学中我们会学习如何使用线性规划的方 ...
- 洛谷OJ:P5960 【模板】差分约束算法
思路:差分约束模板题,注意使用SPFA来判断负环,也即无解的情况. #include<queue> #include<vector> #include<string> ...
- 专题·树链剖分【including 洛谷·【模板】树链剖分
初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...
- 洛谷·【模板】点分树 | 震波【including 点分树
初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...
- 【后缀数组】洛谷P3809模板题
题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...
- 洛谷.4897.[模板]最小割树(Dinic)
题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...
- 强连通分量:洛谷P3387 模板:缩点
传送门 顾名思义,模板awa #include <cstdio> #include <cstring> #include <cmath> #include < ...
最新文章
- JQuery中each()的使用方法说明
- ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)
- ubuntu14.04+gtsam安装(亲测)
- Linux系统基础知识
- flowable工作流 流程变量_互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理...
- gulp错误GulpUglifyError: unable to minify JavaScript解决
- 删缓存,数据库更新谁先执行,及延时双删
- android flag,Android 屏幕锁 - FLAG_KEEP_SCREEN_ON
- 软件工程项目经理必备能力
- 命令行CMD计算文件HASH值
- 回答完数据库连接池原理,面试官跪着求我入职他们公司
- 建造者模式(Builder)---创建型
- 茅台酒如何转卖?价格如何才最合理?爬取公众号后每天自动发送价格到钉钉如何呢?
- 《深入理解计算机系统》学习记录
- 思科静态路由和浮动路由的配置
- 六旋翼农用喷药、航拍功能无人机设计
- 自动计数报警器c语言程序,简易STC15F104E单片机定时报警器制作 附程序
- Core Spec 5.0 学习
- 多伦多大学Self-Driving Cars自动驾驶专项课程(三)Driving Decisions and Actions
- java 正则表达式不包含某个字符
热门文章
- 修复iPhone白苹果
- 使用keybase给你的Github commit加上GPG Verified签名认证(keybase教程)
- 昨天去某大厂面试,居然让我做四则运算,还好我够机灵。
- 推荐几个免费论文查重网站
- 黑客入侵龙卷风警报系统 城市关键基础设施安全问题再被提上议程
- ajax poker,《使命召唤15》大逃杀模式介绍 人物解锁方法一览
- 背篼酥课堂第九课--前端知识、APP知识
- Microsoft兼容性遥测是什么?Microsoft兼容性遥测占用高磁盘
- 永远的《毕业生》之《Scarborough Fair》
- java 临时文件目录_在Java中使用临时文件/文件夹