题目链接

Solution

差分约束乱搞就好了.

需要注意的地方:

  • 对于大于等于的直接联等于,应为等于,因为对于我满足条件而言,等于总是最好的.
  • 对于等于的,注意要建双向边.
  • 然后要开 \(long~long\) .

然后按照套路搞就是了.

Code

  1. // luogu-judger-enable-o2
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. const int maxn=100008;
  5. struct sj{int to,next,w;}a[maxn*2];
  6. int head[maxn],size,v[maxn];
  7. int dis[maxn],n,m,cnt[maxn];
  8. void add(int x,int y,int w)
  9. {
  10. a[++size].to=y;
  11. a[size].next=head[x];
  12. head[x]=size;
  13. a[size].w=w;
  14. }
  15. queue<int>q;
  16. void SPFA()
  17. {
  18. while(!q.empty())
  19. {
  20. int x=q.front(); q.pop();
  21. cnt[x]++;
  22. if(cnt[x]>=n){cout<<-1<<endl;exit(0);}
  23. for(int i=head[x];i;i=a[i].next)
  24. {
  25. int tt=a[i].to;
  26. if(dis[tt]<dis[x]+a[i].w)
  27. {
  28. dis[tt]=dis[x]+a[i].w;
  29. if(!v[tt])
  30. q.push(tt),v[tt]=1;
  31. }
  32. }
  33. v[x]=0;
  34. }
  35. }
  36. int main()
  37. {
  38. scanf("%d%d",&n,&m);
  39. for(int i=1;i<=m;i++)
  40. {
  41. int opt,x,y;
  42. scanf("%d%d%d",&opt,&x,&y);
  43. if(opt==1) add(x,y,0),add(y,x,0);
  44. if(opt==2) add(x,y,1);
  45. if(opt==3) add(y,x,0);
  46. if(opt==4) add(y,x,1);
  47. if(opt==5) add(x,y,0);
  48. }
  49. memset(dis,-127,sizeof(dis));
  50. for(int i=1;i<=n;i++)
  51. q.push(i),dis[i]=1,v[i]=1;
  52. SPFA();
  53. /*int kk=192608173;
  54. for(int i=1;i<=n;i++)
  55. kk=min(kk,dis[i]);*/
  56. long long ans=0;
  57. for(int i=1;i<=n;i++)
  58. ans+=dis[i];
  59. if(ans<n)ans=-1;
  60. //cout<<dis[i]<<endl,ans+=(dis[i]-kk);
  61. cout<<ans<<endl;
  62. }

[SCOI2011]糖果 (差分约束)的更多相关文章

  1. P3275 [SCOI2011]糖果 && 差分约束(二)

    学习完了差分约束是否有解, 现在我们学习求解最大解和最小解 首先我们回想一下是否有解的求解过程, 不难发现最后跑出来任意两点的最短路关系即为这两元素的最短路关系. 即: 最后的最短路蕴含了所有元素之间 ...

  2. BZOJ 2330 SCOI2011糖果 差分约束

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2819  Solved: 820 题目连接 http://www ...

  3. BZOJ2330:[SCOI2011]糖果(差分约束)

    Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...

  4. bzoj 2330 [SCOI2011]糖果 差分约束模板

    题目大意 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配 ...

  5. 洛谷P3275 [SCOI2011]糖果(差分约束)

    题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...

  6. BZOJ 2330: [SCOI2011]糖果( 差分约束 )

    坑爹...要求最小值要转成最长路来做.... 小于关系要转化一下 , A < B -> A <= B - 1 ------------------------------------ ...

  7. 【BZOJ2330】【SCOI2011】糖果 [差分约束]

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 幼儿园 ...

  8. BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 5395  Solved: 1750[Submit][Status ...

  9. bzoj2330糖果——差分约束

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束,再建立一个源点0,向所有点连边权为1的边,表示每个人都会分到糖果: 答案较大 ...

随机推荐

  1. C++ Stack 与String

    // ConsoleApplication1.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include "pch.h" ...

  2. C++链表简单的应用

    学生管理系统,输入学生的姓名和学号,然后再输出: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib ...

  3. 课外作业1:将一个double类型的小数,按照四舍五入保留两位小数

    package come.one01; public class One02 { public static void main(String[] args) { double numa = 3.14 ...

  4. java的IO机制

    BIO.NIO.AIO -----> Block-IO : inputStream 和OutputStream,Reader和Writer 1个连接,启动一个线程,这样导致很大的线程开销 NIO ...

  5. OI算法复习汇总

    各大排序 图论: spfa floyd dijkstra *拉普拉斯矩阵 hash表 拓扑排序 哈夫曼算法 匈牙利算法 分块法 二分法 费马小定理: a^(p-1) ≡1(mod p) 网络流 二分图 ...

  6. html页面简单访问限制

    PS:突然发现博客园有密码保护功能,已经可以满足基本需求了.博客园还能备份自己的所有数据,做到了数据归用户所有,平台只是展示,真是良心网站,大赞. 想要通过一个站点放一些东西给一些人看,但是又不想让所 ...

  7. PHPCompatibility检测php版本语法兼容

    直接上步骤: cd /datas/htdocs/ mkdir PHPCompatibility cd PHPCompatibility/ curl -s http://getcomposer.org/ ...

  8. 使用python3调用MyQR库生成动态二维码(附源代码)

    可生成普通二维码.带图片的艺术二维码(黑白与彩色).动态二维码(黑白与彩色). GitHub:https://github.com/sylnsfar/qrcode 中文版:https://github ...

  9. python3与python2的编码问题

    在讲这个问题之前,我们先说说unicode的工作原理.unicode包含了跟全球所有国家编码的映射关系,就是不管你用哪个国家的编码,unicode都能找到它在unicode中的编码.那么无论你用什么编 ...

  10. 最长回文子串——manacher

    最长回文子串--Manacher 算法 (原版的博主的代码都是用py写的,这里改成c++) c++ 算法 字符串处理 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一 ...