原题链接

裸的差分约束。

  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\)的版本。

  1. #include<cstdio>
  2. #include<cstring>
  3. using namespace std;
  4. const int N = 1e4 + 10;
  5. const int M = 3e4 + 10;
  6. int fi[N], di[M], ne[M], da[M], dis[N], l;
  7. bool v[N];
  8. inline int re()
  9. {
  10. int x = 0;
  11. char c = getchar();
  12. bool p = 0;
  13. for (; c < '0' || c > '9'; c = getchar())
  14. p |= c == '-';
  15. for (; c >= '0' && c <= '9'; c = getchar())
  16. x = x * 10 + c - '0';
  17. return p ? -x : x;
  18. }
  19. inline void add(int x, int y, int z)
  20. {
  21. di[++l] = y;
  22. da[l] = z;
  23. ne[l] = fi[x];
  24. fi[x] = l;
  25. }
  26. bool dfs(int x)
  27. {
  28. int i, y;
  29. v[x] = 1;
  30. for (i = fi[x]; i; i = ne[i])
  31. if (dis[y = di[i]] < dis[x] + da[i])
  32. {
  33. dis[y] = dis[x] + da[i];
  34. if (v[y])
  35. return false;
  36. if (!dfs(y))
  37. return false;
  38. }
  39. v[x] = 0;
  40. return true;
  41. }
  42. int main()
  43. {
  44. int i, n, m, x, y, p, z;
  45. n = re();
  46. m = re();
  47. for (i = 1; i <= m; i++)
  48. {
  49. p = re();
  50. x = re();
  51. y = re();
  52. if (!(p ^ 3))
  53. {
  54. add(y, x, 0);
  55. add(x, y, 0);
  56. }
  57. else
  58. {
  59. z = re();
  60. if (!(p ^ 2))
  61. add(x, y, -z);
  62. else
  63. add(y, x, z);
  64. }
  65. }
  66. for (i = 1; i <= n; i++)
  67. add(0, i, 0);
  68. memset(dis, 250, sizeof(dis));
  69. dis[0] = 0;
  70. if (dfs(0))
  71. printf("Yes");
  72. else
  73. printf("No");
  74. return 0;
  75. }

洛谷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. 前往央都之行-gdufe1529

    前往央都之行 Time Limit: 2000/1000ms (Java/Others) Problem Description: 刀光哥桐人和尤吉欧两人为了拯救爱丽丝,同时从卢利特村出发要尽快同时赶 ...

  2. Linux查看进程运行的完整路径方法

    通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个 ...

  3. java 开学第四周

    package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...

  4. Gradle 在Eclipse中的使用

    eclipse上gradle插件的安装 1)在Eclipse中选择Help -> Eclipse Marketplace…,输入buildship点击Go,然后选择Install安装Gradle ...

  5. NumPy 矩阵库(Matrix)

    NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...

  6. pep8 && pep20

    pep8(部分,遇到问题再补充) 1.不建议使用tab键来空格,避免不必要的空格.操作符左右各加一个空格,函数默认参数使用的赋值符左右省略空格. 2.类和top-level函数定义之间空两行:类中的方 ...

  7. stm32 开发中startup.s文件中常见的命令功能

    由于C的普及以及编译器的发展,越来越多的软件工程师在编程时很少有机会接触到汇编语言.在ARM的开发中,我们不可避免的会遇到启动文件的编写,在KEIL环境中一般采用了startup.s的文件作为启动代码 ...

  8. python:django

    ====启动django==== python manager.py runserver --host 0.0.0.0 --port 9008 python manager.py runserver ...

  9. crm作业知识点集合[三]

    知识点1 我们要实现一个这样的功能,在学生表中,可以查看每个学生的报名的班级的所有的成绩,就是下图的效果 1.首先我们需要在学生表中自定义一列,这一列的内容就是一个a标签,指向另外一个页面,而我们在另 ...

  10. javaweb导出excel

    百度找了半天也没找到一个提供有效思路的,全都告诉我此路不通 html表格数据粘贴到txt,然后改后缀为xsl,打开,发现二者无缝对接 @参考文章.@参考前任项目 /** * @todo * @para ...