/*【bzoj2330】[SCOI2011]糖果

2014年3月5日1,2761

Description

幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求。幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。

Input

输入的第一行是两个整数N,K。

接下来K行,表示这些点需要满足的关系,每行3个数字,X,A,B。

如果X=1, 表示第A个小朋友分到的糖果必须和第B个小朋友分到的糖果一样多;

如果X=2, 表示第A个小朋友分到的糖果必须少于第B个小朋友分到的糖果;

如果X=3, 表示第A个小朋友分到的糖果必须不少于第B个小朋友分到的糖果;

如果X=4, 表示第A个小朋友分到的糖果必须多于第B个小朋友分到的糖果;

如果X=5, 表示第A个小朋友分到的糖果必须不多于第B个小朋友分到的糖果;

Output

输出一行,表示lxhgww老师至少需要准备的糖果数,如果不能满足小朋友们的所有要求,就输出-1。

*/

//差分约束题目 注意数据范围。建立超级原点。

#include<cstdio>
#include<iostream>
using namespace std;
int n,m,cnt,head[100006],next[400006],u[400006],v[400006],h,t,a[100006];
int ci[100006],f[100006];
long long d[100006];
void jia(int a1,int a2,int a3)
{cnt++;next[cnt]=head[a1];head[a1]=cnt;u[cnt]=a2;v[cnt]=a3;
}
int main()
{scanf("%d%d",&n,&m);for(int i=0;i<m;i++){int a1,a2,a3;scanf("%d%d%d",&a1,&a2,&a3);if(a1==1){jia(a2,a3,0);jia(a3,a2,0);}if(a1==2){if(a2==a3){printf("-1");return 0;}jia(a2,a3,1);}if(a1==3)jia(a3,a2,0);if(a1==4){if(a2==a3){printf("-1");return 0;}jia(a3,a2,1);}if(a1==5)jia(a2,a3,0);}for(int i=n;i;i--)jia(0,i,1);a[1]=0;ci[0]++;t=1;f[0]=1;for(;h!=t;){h++;if(h>100004)h=1;f[a[h]]=0;for(int i=head[a[h]];i;i=next[i])if(d[u[i]]<d[a[h]]+v[i]){d[u[i]]=d[a[h]]+v[i];ci[u[i]]++;if(ci[u[i]]==n+1){printf("-1\n");return 0;}if(!f[u[i]]){t++;if(t>100004)t=1;a[t]=u[i];f[u[i]]=1;}}}long long ans=0;for(int i=1;i<=n;i++)ans+=d[i];printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/xydddd/p/5155279.html

差分约束 【bzoj2330】[SCOI2011]糖果相关推荐

  1. 【差分约束】SCOI2011糖果

    P3275 [SCOI2011]糖果 快noip了我还在干什么啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 来我们看这道题 根据条件建图, 因为求得是最小值, 所以要跑最长路qwq(这是我记住的QAQ ...

  2. 算法提高课-图论-差分约束- AcWing 1169. 糖果:spfa求单源最短路、差分约束

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 差分约束系统 差分约束系统是一种特殊的N元一次不等式组.它包含N个变量X1,...,XnX_1,...,X_nX1​,...,Xn​ ...

  3. BZOJ2330 SCOI2011糖果

    复习了一波差分约束. http://blog.csdn.net/my_sunshine26/article/details/72849441 构图方式记住就好. 本题要倒序插入否则会被卡. 1 #in ...

  4. CSP认证201809-4 再卖菜[C++题解]:差分约束、前缀和

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 对于a0,a1,...,ana_0, a_1,...,a_na0​,a1​,...,an​,经过计算相邻的数的平均值得到b0,b1, ...

  5. 【BZOJ2330】【tyvj1785】【codevs2404】糖果,第一次的差分约束

    传送门1 传送门2 传送门3 写在前面:tyvj打卡的不归路and第一次写差分约束,比较生疏-- 思路: 1.看到题目给出了元素之间的大小关系,我们比较容易想到了差分约束,而且求的是最少糖果数,所以可 ...

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

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 6355  Solved: 2096 [Submit][Stat ...

  7. AcWing 4247. 糖果(差分约束最短路)

    题目连接 https://www.acwing.com/problem/content/4250/ http://poj.org/problem?id=3159 思路 假设第i个同学得到的糖果数量为a ...

  8. 1169 糖果(差分约束)

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

  9. P3275-[SCOI2011]糖果【差分约束,负环】

    正题 题目大意:https://www.luogu.org/problemnew/show/P3275 题目大意 对于nnn个值,给出一系列不等式.求每个值的最小正整数. 解题思路 差分约束 code ...

最新文章

  1. 64位win7安装IIS7时不能浏览asp的问题
  2. Activity的插件化(三)
  3. mysql聚合函数不存在的数据_SELECT子句中不存在聚合函数时的GROUP BY行为
  4. 应用基础计算机一级的题目,计算机应用基础一级模拟题
  5. 数据库01-范式总结
  6. Hadoop-rpc调用案例,服务端,客户端代码案例
  7. android contacts电话查询头像,android透过查询电话号码获取联系人头像
  8. python onenet_使用Python2.7 POST 数据到 onenet 平台
  9. 栈溢出笔记1.2 覆盖EIP
  10. mysql高可用方案之主从架构(master-slave)
  11. viewport属性
  12. oracle数据库一些常用数据库类型
  13. 邱锡鹏DL经典-神经网络与深度学习
  14. 慕有轶:看不清的方向,你还在盲目操作,犹如飞蛾扑火!
  15. win10系统镜像下载及在VMware虚拟机上创建win10虚拟机
  16. Spring In Action 4 学习笔记(一)Spring概览
  17. PEG衍生物Azide-PEG-NHS,N3-PEG-NHS,叠氮-聚乙二醇-活性酯
  18. 商城产品属性数据库设计
  19. gcc命令行选项说明
  20. SQL实战39.针对上面的salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,

热门文章

  1. ASTreeView Demo:Add, Edit Delete nodes
  2. xtraback工具的使用和备份
  3. e课表项目第二次冲刺周期第七天
  4. 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
  5. USACO 2.3 Money Systems(DP)
  6. 如何提高自己的思维逻辑能力?
  7. 梁建章的多米诺,混合办公的未知数
  8. 复盘 | 听全民K歌体验设计师聊聊歌房项目完整设计历程
  9. 在Java8的foreach()中不能break,如果需要continue时,可以使用return
  10. 利用jvisualvm分析JVM,进行性能调优