[SCOI2011]糖果 (差分约束)
题目链接
Solution
差分约束乱搞就好了.
需要注意的地方:
- 对于大于等于的直接联等于,应为等于,因为对于我满足条件而言,等于总是最好的.
- 对于等于的,注意要建双向边.
- 然后要开 \(long~long\) .
然后按照套路搞就是了.
Code
// luogu-judger-enable-o2
#include<bits/stdc++.h>
using namespace std;
const int maxn=100008;
struct sj{int to,next,w;}a[maxn*2];
int head[maxn],size,v[maxn];
int dis[maxn],n,m,cnt[maxn];
void add(int x,int y,int w)
{
a[++size].to=y;
a[size].next=head[x];
head[x]=size;
a[size].w=w;
}
queue<int>q;
void SPFA()
{
while(!q.empty())
{
int x=q.front(); q.pop();
cnt[x]++;
if(cnt[x]>=n){cout<<-1<<endl;exit(0);}
for(int i=head[x];i;i=a[i].next)
{
int tt=a[i].to;
if(dis[tt]<dis[x]+a[i].w)
{
dis[tt]=dis[x]+a[i].w;
if(!v[tt])
q.push(tt),v[tt]=1;
}
}
v[x]=0;
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int opt,x,y;
scanf("%d%d%d",&opt,&x,&y);
if(opt==1) add(x,y,0),add(y,x,0);
if(opt==2) add(x,y,1);
if(opt==3) add(y,x,0);
if(opt==4) add(y,x,1);
if(opt==5) add(x,y,0);
}
memset(dis,-127,sizeof(dis));
for(int i=1;i<=n;i++)
q.push(i),dis[i]=1,v[i]=1;
SPFA();
/*int kk=192608173;
for(int i=1;i<=n;i++)
kk=min(kk,dis[i]);*/
long long ans=0;
for(int i=1;i<=n;i++)
ans+=dis[i];
if(ans<n)ans=-1;
//cout<<dis[i]<<endl,ans+=(dis[i]-kk);
cout<<ans<<endl;
}
[SCOI2011]糖果 (差分约束)的更多相关文章
- P3275 [SCOI2011]糖果 && 差分约束(二)
学习完了差分约束是否有解, 现在我们学习求解最大解和最小解 首先我们回想一下是否有解的求解过程, 不难发现最后跑出来任意两点的最短路关系即为这两元素的最短路关系. 即: 最后的最短路蕴含了所有元素之间 ...
- BZOJ 2330 SCOI2011糖果 差分约束
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2819 Solved: 820 题目连接 http://www ...
- BZOJ2330:[SCOI2011]糖果(差分约束)
Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- bzoj 2330 [SCOI2011]糖果 差分约束模板
题目大意 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配 ...
- 洛谷P3275 [SCOI2011]糖果(差分约束)
题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- BZOJ 2330: [SCOI2011]糖果( 差分约束 )
坑爹...要求最小值要转成最长路来做.... 小于关系要转化一下 , A < B -> A <= B - 1 ------------------------------------ ...
- 【BZOJ2330】【SCOI2011】糖果 [差分约束]
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 幼儿园 ...
- BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5395 Solved: 1750[Submit][Status ...
- bzoj2330糖果——差分约束
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束,再建立一个源点0,向所有点连边权为1的边,表示每个人都会分到糖果: 答案较大 ...
随机推荐
- 面试题-谈谈你对Java平台的理解
平台无关性 GC 语言特性 面向对象 类库 异常处理 一次编译到处运行 JVM如何加载Class文件 Java反射 ClassLoader 种类 双亲委派机制 loadcalss和forName
- targetcli save error
iscsi configuration unable to save python error “ValueError: 'Implict and Explict' is not in list” / ...
- js类型判别大合集
1.typeof number,string,boolean,undefined,symbol,object,function 对象中除了函数为function,其他对象都判别为object, 缺陷: ...
- Bootstrap历练实例:向列表组添加内容
向列表组添加自定义内容 我们可以向上面已添加链接的列表组添加任意的 HTML 内容.下面的实例演示了这点: <!DOCTYPE html><html><head>& ...
- d3网址
官网: http://d3js.com D3创始人 http://bost.ocks.org.mike 教程: http://www.dashingd3js.com/table-of-contents ...
- java开发微信公众号----开发者基本配置的
首先附上微信公众平台开发技术文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5 本文主要描 ...
- Find the Longest Word in a String-freecodecamp算法题目
Find the Longest Word in a String(找出最长单词) 要求 在句子中找出最长的单词,并返回它的长度 函数的返回值应该是一个数字. 思路 用.split(' ')将句子分隔 ...
- FastJsonUtils工具类
fastjson是由alibaba开源的一套json处理器.与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的性能优势. 版权声明:本文为博主 ...
- sql 单表/多表查询去除重复记录
单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 *************************************** ...
- 安装openstack同步数据库时出错解决方法
错误提示:(2003, "Can't connect to MySQL server on 'controller' ([Errno -2] Name or service not know ...