题目


分析

对于描述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 的农场的更多相关文章

  1. 洛谷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\ ...

  2. 洛谷P1993 小K的农场 [差分约束系统]

    题目传送门 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...

  3. 洛谷 P1993 小K的农场 解题报告

    P1993 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...

  4. 洛谷 P1993 小K的农场

    P1993 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...

  5. 题解—— 洛谷 p1993 小K的农场(差分约束&负环判断)

    看到题就可以想到差分约束 判断负环要用dfs,bfs-spfa会TLE 4个点 bfs-spfa #include <cstdio> #include <algorithm> ...

  6. 『题解』洛谷P1993 小K的农场

    更好的阅读体验 Portal Portal1: Luogu Description 小\(K\)在\(\mathrm MC\)里面建立很多很多的农场,总共\(n\)个,以至于他自己都忘记了每个农场中种 ...

  7. 洛谷P1993 小 K 的农场

    题目描述 小 K 在 Minecraft 里面建立很多很多的农场,总共 n 个,以至于他自己都忘记了每个 农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m 个),以下列三种形式描 述: 农场 ...

  8. 洛谷P1993 小K的农场

    思路是差分约束+dfs版SPFA. 首先来思考差分约束的过程,将题目给出的式子进行转化: 农场a比农场b至少多种植了c个单位的作物, SPFA我们考虑跑最短路,那么要让SPFA中满足的式子就是if(d ...

  9. 洛谷P1993 小K的农场_差分约束_dfs跑SPFA

    Code: #include<cstdio> #include<queue> using namespace std; const int N=10000+233; const ...

  10. 洛谷P1993 小 K 的农场(查分约束)

    /* 加深一下对查分约束的理解 建图的时候为了保证所有点联通 虚拟一个点 它与所有点相连 权值为0 然后跑SPFA判负环 这题好像要写dfs的SPFA 要不超时 比较懒 改了改重复进队的条件~ */ ...

随机推荐

  1. 项目打包setup.py(setuptools)

    参考 https://www.cnblogs.com/dan-baishucaizi/p/13564333.html https://www.cnblogs.com/dan-baishucaizi/p ...

  2. 04、Etcd中常见的概念

    本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 上一章节,我们学习了 Etcdctl 的使用,从中窥探了 Etcd 的强大之处.从这一节开始,后面的内容基本上都是偏理论的东西,争取在看 ...

  3. 【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (二)

    问题描述 在上一篇博文([Azure 存储服务].NET7.0 示例代码之上传大文件到Azure Storage Blob (一):https://www.cnblogs.com/lulight/p/ ...

  4. 代码随想录算法训练营第二十七天| 39. 组合总和 40.组合总和II 131.分割回文串

      39. 组合总和 卡哥建议:本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制 题目链接/文章讲解:https://programmercarl.com ...

  5. Jmeter 如何连接mysql数据库?

    1 首先安装jmeter jdbc 插件 JDBC驱动包下载教程:https://blog.csdn.net/qq_50896685/article/details/129154801 2 安装好后将 ...

  6. 使用 Docker 部署 File Browser 文件管理系统

    1)File Browser 介绍 官网:https://filebrowser.org/ GitHub:https://github.com/filebrowser/filebrowser 今天为大 ...

  7. centos python3虚拟环境

    为什么需要虚拟环境? 在使用 Python 语言时,通过 pip(pip3)来安装第三方包,但是由于 pip 的特性,系统中只能安装每个包的一个版本.但是在实际项目开发中,不同项目可能需要第三方包的不 ...

  8. setting.json 20210825 更新

    vue代码格式化思路 { "pasteImage.path": "${currentFileNameWithoutExt}_Images/", "up ...

  9. 基于2.4G私有协议的无线取餐系统设及实现

    前记  最近在使用TLSR8355做几个小产品.正好赶上有客户需要一个无线取餐系统解决方案.笔者分析了一下需求.该芯片有充足的按键,LED灯,GPIO接口等.做这一款产品是顺道的事情. 需求梳理  功 ...

  10. jenkins安装和基本使用

    参考:https://zhuanlan.zhihu.com/p/56037782(安装) https://gitee.com/oschina/Gitee-Jenkins-Plugin/(使用) htt ...