洛谷P3275 [SCOI2011]糖果_差分约束_判负环
Code:
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
const int N=300000+3;
const int INF=-2333233;
queue<int>Q;
int d[N],inq[N],times[N];
int head[N],to[N<<1],val[N<<1],nex[N<<1];
int cnt,n,s,k;
void add_edge(int u,int v,int c)
{
nex[++cnt]=head[u],head[u]=cnt;
to[cnt]=v,val[cnt]=c;
}
int spfa()
{
for(int i=1;i<=n;++i)
d[i]=INF;
d[s]=0,inq[s]=1;Q.push(s);
while(!Q.empty())
{
int u=Q.front();Q.pop();inq[u]=0;
++times[u];
if(times[u]>=n)return 0;
for(int v=head[u];v;v=nex[v])
if(d[to[v]]<d[u]+val[v])
{
d[to[v]]=d[u]+val[v];
if(!inq[to[v]])
{
inq[to[v]]=1;
Q.push(to[v]);
}
}
}
return 1;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=k;++i)
{
int Ty,a,b;
scanf("%d%d%d",&Ty,&a,&b);
if(Ty==1){
add_edge(b,a,0);
add_edge(a,b,0);
}
if(Ty==2)
add_edge(a,b,1);
if(Ty==3)
add_edge(b,a,0);
if(Ty==4)
add_edge(b,a,1);
if(Ty==5)
add_edge(a,b,0);
if(Ty%2==0&&a==b)
{
printf("-1");return 0;
}
}
s=0;
for(int i=n;i>=1;--i)add_edge(s,i,1);
if(!spfa())
{
printf("-1");return 0;
}
long long ans=0;
for(int i=1;i<=n;++i)ans+=d[i];
printf("%lld",ans);
return 0;
}
洛谷P3275 [SCOI2011]糖果_差分约束_判负环的更多相关文章
- 洛谷P3275 [SCOI2011]糖果(差分约束,最长路,Tarjan,拓扑排序)
洛谷题目传送门 差分约束模板题,等于双向连0边,小于等于单向连0边,小于单向连1边,我太蒻了,总喜欢正边权跑最长路...... 看遍了讨论版,我是真的不敢再入复杂度有点超级伪的SPFA的坑了 为了保证 ...
- 洛谷——P3275 [SCOI2011]糖果
P3275 [SCOI2011]糖果 差分约束模板题,基本思路就是$d[v]+w[v,u]<=d[u]$,$Spfa$更新方法, 有点套路的是要建立原点,即图中不存在的点来向每个点加边,但同样这 ...
- BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)
BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多少权值, ...
- POJ——1364King(差分约束SPFA判负环+前向星)
King Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11946 Accepted: 4365 Description ...
- 洛谷P3275 [SCOI2011]糖果(差分约束)
题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- 洛谷P3275 [SCOI2011]糖果 [差分约束系统]
题目传送门 糖果 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比 ...
- 【POJ 3159】Candies&&洛谷P3275 [SCOI2011]糖果
来补一下自己很久以前那个很蒟蒻很蒟蒻的自己没有学懂的知识 差分约束,说白了就是利用我们在求最短路的一个\(relax\)操作时的判断的原理 \[dis[v]>dis[u]+disj(u,v)\] ...
- 题解——洛谷P3275 [SCOI2011]糖果
一道条件非常多的差分约束 把\( a < b \)转化为\( a-b \le -1\)就可做了 \( a>b \)的情况同理 若有负环则无解输出-1 注意本题中要求每个人都有糖果 所以假设 ...
- 洛谷P3275 [SCOI2011]糖果 题解
题目链接: https://www.luogu.org/problemnew/show/P3275 分析: 本题就是一个裸的差分约束. 核心: x=1x=1x=1时,a=b,a−>b,b−> ...
- 洛谷P3275 [SCOI2011]糖果
差分约束大坑题 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring ...
随机推荐
- 输入输出流String间的转换
来自:http://wuhongyu.iteye.com/blog/806791 1.String to inputStream InputStream is = new ByteArrayInp ...
- mysql连接错误,error1251解决方式
解决此问题有两种方法,一种是更新navicat驱动来解决此问题,一种是将mysql用户登录的加密规则修改为mysql_native_password.本文采用第二种方式ALTER USER 'root ...
- TortoiseGit生成PuttyKey与GitHub的SSH进行关联
1.打开Puttygen 要到进度条满格为止,知道出现如下界面: 把上面的Key复制. 最后点击[Save private key]保存. 2.登录GitHub进行如下操作: Settings-> ...
- POJ 题目3020 Antenna Placement(二分图)
Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7011 Accepted: 3478 ...
- JS禁用右键+禁用Ctrl+u+禁用F12
第一种方法: , , ]; document.oncontextmenu = new Function("event.returnValue=false;"),//禁用右键 doc ...
- Running the app on your device
So far, you've run the app on the Simulator. That's nice and all but probably notwhy you're learning ...
- 网页设计——Dreamweaver
在看ASP.NET视频时,讲到了一款编写HTML代码的软件--Dreamweaver.它是一款专门进行网页设置的软件.通过它能够设计出多彩的界面,相对于vs中自带的设计方式来说,他不须要知道太多的技术 ...
- luogu2242 公路维修问题
题目大意 把一个高速公路看作由连续排列的一个个格子组成,有n个格子上有坑.给出m,要求出m段区间,使得这m区间覆盖到所有坑(交通管制),且占据的格子数量最少.输出占据的格子数. 题解 换个角度看问题. ...
- oc11---结构体作为属性
// // main.m // 结构体作为对象的属性 #import <Foundation/Foundation.h> typedef struct { int year; int mo ...
- Don't Block on Async Code
http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html This is a problem that is brough ...