Code:

  1. #include<cstdio>
  2. #include<queue>
  3. using namespace std;
  4. const int N=10000+233;
  5. const int INF=10000000;
  6. int head[N],to[N<<1],nex[N<<1],val[N<<1],vis[N],d[N];
  7. int cnt;
  8. void add_edge(int u,int v,int c)
  9. {
  10. nex[++cnt]=head[u],head[u]=cnt;
  11. to[cnt]=v,val[cnt]=c;
  12. }
  13. int spfa(int u)
  14. {
  15. vis[u]=1;
  16. for(int v=head[u];v;v=nex[v])
  17. {
  18. int x=to[v];
  19. if(d[u]+val[v]<d[x])
  20. {
  21. d[x]=d[u]+val[v];
  22. if(vis[x]==1)return 0;
  23. if(spfa(x)==0)return 0;
  24. }
  25. }
  26. vis[u]=0;
  27. return 1;
  28. }
  29. int main()
  30. {
  31. int n,m;
  32. scanf("%d%d",&n,&m);
  33. for(int i=1;i<=n;++i)d[i]=INF;
  34. for(int i=1;i<=m;++i)
  35. {
  36. int Ty,a,b,c;
  37. scanf("%d%d%d",&Ty,&a,&b);
  38. if(Ty!=3)scanf("%d",&c);
  39. if(Ty==1)
  40. add_edge(a,b,-c);
  41. if(Ty==2)
  42. add_edge(b,a,c);
  43. if(Ty==3)
  44. {
  45. c=0;
  46. add_edge(b,a,c);
  47. add_edge(a,b,-c);
  48. }
  49. }
  50. int ans=1;
  51. for(int i=1;i<=n;++i)
  52. {
  53. if(vis[i]==0)
  54. if(!spfa(i))
  55. {
  56. ans=0;break;
  57. }
  58. }
  59. if(ans==0)printf("No");
  60. else printf("Yes");
  61. return 0;
  62. }

  

洛谷P1993 小K的农场_差分约束_dfs跑SPFA的更多相关文章

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

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

  2. BZOJ_3436_小K的农场_差分约束

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

  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的农场 [差分约束系统]

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

  6. 洛谷P1993 小K的农场

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

  7. [bzoj3436]小K的农场_差分约束

    小K的农场 bzoj-3436 题目大意:给定n个点,每个节点有一个未知权值.现在有m个限制条件,形如:点i比点j至少大c,点i比点j至多大c或点i和点j相等.问是否可以通过给所有点赋值满足所有限制条 ...

  8. P1993 小K的农场(差分约束)

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

  9. 洛谷P1993 小 K 的农场

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

随机推荐

  1. CodeVS 1013&1029

    若干二叉树遍历的数据结构题. Problem 1013 传送门:http://codevs.cn/problem/1013/ 本题是一个数据结构——二叉树遍历问题. 对二叉树,给定中序遍历序列(In- ...

  2. 【[Offer收割]编程练习赛11 B】物品价值

    [题目链接]:http://hihocoder.com/problemset/problem/1486 [题意] [题解] 设f[i][j]表示前i个物品,每种属性的状态奇偶状态为j的最大价值; 这里 ...

  3. 安全性测试AppScan工具使用实战

    1.打开appScan 2.点击创建新的扫描[这里我选的是常规扫描] 3.进入配置向导页面,点击下一步 4..进入扫描配置向导页面,url输入http://www.baidu.com(可以打开appS ...

  4. git 强制pull

    git fetch --all git reset --hard origin/master git pull

  5. VS的代码管理工具

    参考文章 可以从中知道修改代码段是要打开相关路径下的文档来修改 官方下载地址 百度云盘 如果项目中国有一些代码重复率非常高,可以把这些代码做成snippet代码段,简化成快捷键命令,加速开发

  6. Spark MLlib LDA 基于GraphX实现原理及源代码分析

    LDA背景 LDA(隐含狄利克雷分布)是一个主题聚类模型,是当前主题聚类领域最火.最有力的模型之中的一个,它能通过多轮迭代把特征向量集合按主题分类.眼下,广泛运用在文本主题聚类中. LDA的开源实现有 ...

  7. Java Word Break(单词拆解)

    给定一个字符串 String s = "leetcode" dict = ["leet", "code"]. 查看一下是够是字典中的词语组成 ...

  8. spring 源码解析

    1. [文件] spring源码.txt ~ 15B     下载(167) ? 1 springн┤┬вио╬Ш: 2. [文件] spring源码分析之AOP.txt ~ 15KB     下载( ...

  9. keyboard键盘demo

    main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...

  10. perl的安装

    http://www.activestate.com/activeperl/downloads 安装的时候,默认把perl放置到环境变量的PATH中 之后,需要重启电脑,确保环境变量生效 执行perl ...