CDOJ 435 (SCOI 2011) 糖果 Label:差分约束系统
糖果
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 131072/131072KB (Java/Others)
Submit Status
幼儿园里有NN个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求。幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。
Input
输入的第一行是两个整数N(1≤N≤1000001≤N≤100000),K(1≤K≤1000001≤K≤100000)。
接下来KK行,表示这些点需要满足的关系,每行33个数字,X,A,B(1≤X≤51≤X≤5, 1≤A,B≤N1≤A,B≤N)。
- 如果X=1, 表示第A个小朋友分到的糖果必须和第B个小朋友分到的糖果一样多;
- 如果X=2, 表示第A个小朋友分到的糖果必须少于第B个小朋友分到的糖果;
- 如果X=3, 表示第A个小朋友分到的糖果必须不少于第B个小朋友分到的糖果;
- 如果X=4, 表示第A个小朋友分到的糖果必须多于第B个小朋友分到的糖果;
- 如果X=5, 表示第A个小朋友分到的糖果必须不多于第B个小朋友分到的糖果;
Output
输出一行,表示lxhgww老师至少需要准备的糖果数,如果不能满足小朋友们的所有要求,就输出−1。
Sample input and output
|
Sample Input |
Sample Output |
|
5 7 1 1 2 2 3 2 4 4 1 3 4 5 5 4 5 2 3 5 4 5 1 |
11 |
代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#define ll long long
#define INF 0x3f3f3f3f
#define MAXN 200005
using namespace std; int N,M,tot;
int inq[MAXN],dis[MAXN],cur[MAXN];
vector<int> G[MAXN],c[MAXN];
queue<int> q; void add(int u,int v,int w){
G[u].push_back(v);
c[u].push_back(w);
} ll sum(){
ll tmp=;
for(int i=;i<=N;i++)
tmp+=dis[i];
return tmp;
} int spfa(){
q.push();inq[]=;
while(!q.empty()){
int x=q.front();q.pop();
for(int i=;i<G[x].size();i++){
int to=G[x][i];
if(dis[to]<dis[x]+c[x][i]){//最长路
dis[to]=dis[x]+c[x][i];
if(++cur[to]>=N) return ;
if(!inq[to]){
q.push(to);
inq[to]=;
}
}
}
inq[x]=;
}
return ;
} int main(){
// freopen("01.in","r",stdin);
scanf("%d%d",&N,&M);
for(int i=;i<=M;i++){
int op,x,y;
scanf("%d%d%d",&op,&x,&y);
switch(op){
case :{
add(x,y,);
add(y,x,);//Orz
break;
}
case :{
if(x==y){puts("-1");return ;}//Orz
add(x,y,);
break;
}
case :{
add(y,x,);
break;
}
case :{
if(x==y){puts("-1");return ;}//Orz
add(y,x,);
break;
}
case :{
add(x,y,);
break;
}
}
}
for(int i=;i<=N;i++) add(,i,);//每个小朋友都要分到 if(!spfa()) puts("-1");
else printf("%lld\n",sum());//long long return ;
}通过最长路来求解,值得一看
注意Line71,Line69 的判断
还有Line37写成 if(++cur[to]>=N-1) return 0;
错得无语了
CDOJ 435 (SCOI 2011) 糖果 Label:差分约束系统的更多相关文章
- bzoj 2330 [SCOI2011]糖果(差分约束系统)
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3574 Solved: 1077[Submit][Status ...
- 【洛谷3275】[SCOI2011] 糖果(差分约束系统入门题)
点此看题面 大致题意: 有\(N\)个小朋友,要求每个人都得到糖果,且每个人的糖果总数满足一定的关系式,请你求出至少共分给小朋友们多少糖果. 关系式的转换 首先,我们可以将题目中给定的式子进行转换: ...
- 【BZOJ2330】糖果(差分约束系统,强连通分量,拓扑排序)
题意: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖 ...
- [SCOI 2011]糖果
Description 题库链接 给出 \(N\) 个节点,节点有正点权, \(K\) 个三元组 \((X,A,B)\) 来描述节点点权之间的关系. 如果 \(X=1\) , 表示 \(A\) 的点权 ...
- BZOJ 2330 SCOI 2011 糖果
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MB Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友 ...
- 解题:SCOI 2011 糖果
题面 能把差分约束卡死的题,因为正解并不是差分约束,然而被我用一种奇怪的姿势过去了... 差分约束就是相等互相连零边,不超过/不低于从不多的一方向另一方连零边,超过/低于从少的一方向另一方连最小的边权 ...
- BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5395 Solved: 1750[Submit][Status ...
- bzoj2330: [SCOI2011]糖果 差分约束系统
幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候 ...
- 【bzoj2330】[SCOI2011]糖果 差分约束系统
题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配 ...
随机推荐
- Clr Via C#读书笔记---I/O限制的异步操作
widows如何执行I/O操作 构造调用一个FileStream对象打开一个磁盘文件-----FileStream.Read方法从文件中读取数据(此时线程从托管代码转为本地/用户模式代码)- ...
- MVC:Control与View传值
MVC页面传值的方式主要有三种: 第一种: 采用ViewData.采用键值对的方式,ViewData存储的是一个object类型,传到view层需要强类型转换:使用起来类似于字典集合模式: ViewD ...
- 几年前做家教写的C教程(之二)
C语言学习宝典(2) 认识C语言中的运算符: (1)算术运算符 (+ - * / %) (2)关系运算符 (> < == >= <= != ) (3 ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Centos6.5里安装Hbase(伪分布式)
首先我们到官方网站下载Hbase,而我使用的版本是hbase-0.94.27.tar.gz 解压下来: tar zxvf hbase-.tar.gz 寻找java安装路径 [root@localhos ...
- android 入门-使用adb安装及卸载apk
我想用adb 安装apk 到设备上现在出现了2个. 提示我没有找到设备 安装不用进去adb shell 这是你存放apk文件夹路径 下面安装apk到手机上(usb一定要连接成功否则读取不到手机 ...
- ThinkPHP中getField( )和field( )
做数据库查询的时候,比较经常用到这两个,总是查手册,记不住,现在把它总结下,希望以后用的时候不查手册了. 不管是用select 查询数据集,还是用find 查询数据,常配合连贯操作where.fiel ...
- Ubuntu14.04LTS系统QQ的安装:pidgin-lwqq
本人是轻度聊天工具使用者(大言不惭是轻度,偷笑),发现输入法到博主也有解决linux下QQ的解决方法,一并抄过来,有需要,请联系原作者 参考链接:http://www.cnblogs.com/zhj5 ...
- [Liferay6.2]核心配置文件portal.properties
portal.properties是liferay中一个非常核心的配置文件.我们可以在liferay源代码或者解压liferay部署包中的portal-impl.jar中获得.以liferay6.2为 ...
- 廖雪峰js教程笔记 2
arguments JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数.arguments类似Array但它不是一个Arr ...