#差分约束,SPFA#洛谷 1993 小 K 的农场
分析
对于描述1,也就是\((a,b,-c)\),\(b\)比\(a\)至多多\(-c\)
对于描述2,也就是\((b,a,c)\),\(a\)比\(b\)至多多\(c\)
对于描述3,也就是\((a,b,0),(b,a,0)\)
用SPFA判负环就可以了
代码
#include <cstdio>
#include <cctype>
#include <deque>
#include <cstring>
#define rr register
using namespace std;
const int N=5011; deque<int>q;
struct node{int y,w,next;}e[N*3];
int as[N],dis[N],cNt[N],v[N],n,k,m;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void add(int x,int y,int w){e[++k]=(node){y,w,as[x]},as[x]=k;}
signed main(){
n=iut(),m=iut();
memset(as,-1,sizeof(as));
for (rr int i=1;i<=n;++i) add(0,i,0);
for (rr int i=1;i<=m;++i){
rr int op=iut(),x=iut(),y=iut();
if (op==1) add(x,y,-iut());
else if (op==2) add(y,x,iut());
else add(x,y,0),add(y,x,0);
}
memset(dis,0x3f,sizeof(dis));
q.push_back(0),dis[0]=0,v[0]=1;
while (q.size()){
rr int x=q.front(); q.pop_front();
for (rr int i=as[x];~i;i=e[i].next)
if (dis[e[i].y]>dis[x]+e[i].w){
dis[e[i].y]=dis[x]+e[i].w;
if (++cNt[e[i].y]==n&&e[i].w<0) return !printf("No");
if (!v[e[i].y]){
v[e[i].y]=1;
if (q.size()&&dis[e[i].y]<dis[q.front()]) q.push_front(e[i].y);
else q.push_back(e[i].y);
}
}
v[x]=0;
}
return !printf("Yes");
}
#差分约束,SPFA#洛谷 1993 小 K 的农场的更多相关文章
- 洛谷1993 小K的农场
原题链接 裸的差分约束. \(X_a-X_b\geqslant C\) \(X_a-X_b\leqslant C\Rightarrow X_b-X_a\geqslant -C\) \(X_a-X_b\ ...
- 洛谷P1993 小K的农场 [差分约束系统]
题目传送门 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...
- 洛谷 P1993 小K的农场 解题报告
P1993 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...
- 洛谷 P1993 小K的农场
P1993 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...
- 题解—— 洛谷 p1993 小K的农场(差分约束&负环判断)
看到题就可以想到差分约束 判断负环要用dfs,bfs-spfa会TLE 4个点 bfs-spfa #include <cstdio> #include <algorithm> ...
- 『题解』洛谷P1993 小K的农场
更好的阅读体验 Portal Portal1: Luogu Description 小\(K\)在\(\mathrm MC\)里面建立很多很多的农场,总共\(n\)个,以至于他自己都忘记了每个农场中种 ...
- 洛谷P1993 小 K 的农场
题目描述 小 K 在 Minecraft 里面建立很多很多的农场,总共 n 个,以至于他自己都忘记了每个 农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m 个),以下列三种形式描 述: 农场 ...
- 洛谷P1993 小K的农场
思路是差分约束+dfs版SPFA. 首先来思考差分约束的过程,将题目给出的式子进行转化: 农场a比农场b至少多种植了c个单位的作物, SPFA我们考虑跑最短路,那么要让SPFA中满足的式子就是if(d ...
- 洛谷P1993 小K的农场_差分约束_dfs跑SPFA
Code: #include<cstdio> #include<queue> using namespace std; const int N=10000+233; const ...
- 洛谷P1993 小 K 的农场(查分约束)
/* 加深一下对查分约束的理解 建图的时候为了保证所有点联通 虚拟一个点 它与所有点相连 权值为0 然后跑SPFA判负环 这题好像要写dfs的SPFA 要不超时 比较懒 改了改重复进队的条件~ */ ...
随机推荐
- mysql进阶语句优化---day40
# ###part1: sql语句优化 #(1) mysql 执行流程 客户端: 发送连接请求,然后发送增删改查sql语句进行执行 服务端: 1.连接层:提供和客户端连接的服务,在tcp协议下 提供多 ...
- django学习第九天---raw查询原生sql和python脚本中调用django环境和ORM锁和事务
ORM执行原生sql语句 在模型查询api不够用的情况下,我们还可以使用原始的sql语句进行查询 方式1 raw() raw()方法,返回模型的实例django.db.models.query.Raw ...
- STL-bitset模拟实现
#include<time.h> #include<string> #include<vector> #include<iostream> using ...
- UG474
为了对工程的资源利用率进行优化,我们首先需要知道当前工程对资源的利用率情况.在Vivado下,我们可以查看工程的资源利用率情况,在下面这张图中,其罗列出了整个工程所使用的资源情况.首先,下面我们需要一 ...
- Spring Cloud跟Dubbo区别?
Spring Cloud是一个微服务框架,提供了微服务中很多功能组件,Dubbo一开始时RPC调用框架,核心是解决服务调用间的问题, Spring Cloud是一个大而全的框架,Dubbo更侧重于服务 ...
- JavaScript 最新动态:2024 年新功能
前言 随着 Web 技术的日新月异,JavaScript 也在不断地吸收新的特性和技术,以满足日益复杂和多样化的开发需求.在 2024 年,JavaScript 迎来了一系列令人瞩目的新功能,这些功能 ...
- 学习ASP.NET Core Razor 编程系列文章目录
学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二--添加一个实体 学习ASP.NET Core Razor 编程系列三--创建数据表及创建项目 ...
- 安装debian后,发现进入不了root
回想了一下,自己安装的时候,没有设置root密码! 解决方法: sudo passwd root 随后设置密码: 再次su 就可以进入root目录了!
- java生产者消费者模式代码示例
package test; import java.util.LinkedList; public class Test { public static void main(String[] args ...
- 博客调整为MarkDown和图床外链、配置Gitee作为图床
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...