原题链接

裸的差分约束。

  1. \(X_a-X_b\geqslant C\)
  2. \(X_a-X_b\leqslant C\Rightarrow X_b-X_a\geqslant -C\)
  3. \(X_a-X_b\geqslant 0,X_b-X_a\geqslant 0\)

并建立一个超级源点\(0\),对每个点连一条权值为\(0\)的边,然后跑\(SPFA\)判断是否有正环即可。

注意该题数据较强,基于\(BFS\)的\(SPFA\)难以跑过,需用基于\(DFS\)的版本。

#include<cstdio>
#include<cstring>
using namespace std;
const int N = 1e4 + 10;
const int M = 3e4 + 10;
int fi[N], di[M], ne[M], da[M], dis[N], l;
bool v[N];
inline int re()
{
int x = 0;
char c = getchar();
bool p = 0;
for (; c < '0' || c > '9'; c = getchar())
p |= c == '-';
for (; c >= '0' && c <= '9'; c = getchar())
x = x * 10 + c - '0';
return p ? -x : x;
}
inline void add(int x, int y, int z)
{
di[++l] = y;
da[l] = z;
ne[l] = fi[x];
fi[x] = l;
}
bool dfs(int x)
{
int i, y;
v[x] = 1;
for (i = fi[x]; i; i = ne[i])
if (dis[y = di[i]] < dis[x] + da[i])
{
dis[y] = dis[x] + da[i];
if (v[y])
return false;
if (!dfs(y))
return false;
}
v[x] = 0;
return true;
}
int main()
{
int i, n, m, x, y, p, z;
n = re();
m = re();
for (i = 1; i <= m; i++)
{
p = re();
x = re();
y = re();
if (!(p ^ 3))
{
add(y, x, 0);
add(x, y, 0);
}
else
{
z = re();
if (!(p ^ 2))
add(x, y, -z);
else
add(y, x, z);
}
}
for (i = 1; i <= n; i++)
add(0, i, 0);
memset(dis, 250, sizeof(dis));
dis[0] = 0;
if (dfs(0))
printf("Yes");
else
printf("No");
return 0;
}

洛谷1993 小K的农场的更多相关文章

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

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

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

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

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

  6. 洛谷P1993 小K的农场

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

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

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

  8. 洛谷 P1993 小K的农场 题解

    每日一题 day55 打卡 Analysis 这是我们一次考试的T1,但我忘了差分约束系统怎么写了,所以就直接输出Yes混了60分 首先转化题目: 1:表示农场 a 比农场 b 至少多种植了 c 个单 ...

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

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

随机推荐

  1. google image

    google图片抓取 google图片是base64加密的,而且base64后的信息放在script信息里面 import pymysql from lxml import etree import ...

  2. OCR技术浅探(转)

    网址:https://spaces.ac.cn/archives/3785 OCR技术浅探 作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步进行文字定位和第三步进行 ...

  3. ubuntu18.04获取root权限并用root用户登录

    1.为root设置初始密码 (1)登录系统,打开终端,输入命令:sudo passwd root(使用root权限为root更改密码) (2)设置root密码(建议简单点,没必要那么复杂): (3)重 ...

  4. input 文本框,对中文长度校验

    在项目中,经常会遇到,对文本框进行校验. eg.  要求姓名长度为20,中文为10,只能输入中英文. <input   maxlength="20" type="t ...

  5. SAP FI模块常用事务代码

    F.52 G/L: Acct Bal.Interest Calculation 总帐:计算科目余额利息 F-06       Post Incoming Payments 收款记帐 F-07      ...

  6. SpringMVC点滴(1)

    在使用springMVC很久,却一直没有总结其中的一些便捷配置和功能,恰好有空,加以总结 Servlet 3之后,在web.xml中加入async的支持,从而实现异步请求,需要在servlet和fil ...

  7. ssh X协议转发

    X协议的作用是远程登录Linux运行GUI界面 主机2开启ssh服务service ssh start 主机1 ssh连接主机2:ssh -X root@192.168.1.110 -p 53 然后可 ...

  8. Java 读写Properties配置文件(转)

    转自:http://www.cnblogs.com/xudong-bupt/p/3758136.html

  9. java面试题:基础知识

    类和对象 Q:讲一下面向对象OOP思想. 面向对象主要是抽象,封装,继承,多态. 多态又分为重载和重写.重载主要是方法参数类型不一样,重写则是方法内容不一样. Q:抽象类和接口有什么区别? 抽象类中可 ...

  10. mysql5.7.20更改root密码

    my.cnf 中在[mysqld]下面增加 skip-grant-tables 使用空密码登录数据库执行下面命令 update mysql.user set authentication_string ...