【bzoj2330】: [SCOI2011]糖果 图论-差分约束-SPFA
恩。。就是裸的差分约束。。
x=1 -> (A,B,0) (B,A,0)
x=2 -> (A,B,1) [这个情况加个A==B无解的要特判]
x=3 -> (B,A,0) [恩这个是不少于一开始zz建反了]
x=4 -> (B,A,1)
x=5 -> (A,B,0)
然后源点到所有点建1的边[恩据说有条链所以要反着连]跑最长路就好了
/* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std; const int N=;
struct edge{
int next,to,v;
}e[N*]; int n,k,ade=;
int first[N],dis[N],vis[N],tim[N];
queue <int> q; void addedge(int x,int y,int v){
e[++ade].to=y;
e[ade].next=first[x];
e[ade].v=v;
first[x]=ade;
} #define s e[x].to
#define v e[x].v
long long spfa(){
q.push(n+),vis[n+]=;
while (!q.empty()){
int p=q.front();
q.pop(),vis[p]=;
for (int x=first[p];x;x=e[x].next){
if (dis[s]<dis[p]+v){
dis[s]=dis[p]+v;
if (!vis[s]) vis[s]=,q.push(s);
tim[s]++;
}
if (tim[s]>n+) return -;
}
}
long long ans=;
for (int i=;i<=n;i++) ans+=dis[i];
return ans;
}
#undef v
#undef s int main(){
scanf("%d%d",&n,&k);
for (int i=,a,b,x;i<=k;i++){
scanf("%d%d%d",&x,&a,&b);
if (x==) addedge(a,b,),addedge(b,a,);
if (x==) if (a==b) {puts("-1"); return ;} else addedge(a,b,);
if (x==) addedge(b,a,);
if (x==) if (a==b) {puts("-1"); return ;} else addedge(b,a,);
if (x==) addedge(a,b,);
}
for (int i=n;i>=;i--) addedge(n+,i,);
printf("%lld\n",spfa());
return ;
}
蒟蒻退役前两天又开始更博客了。。期中考试和地理二模两个星期啥也没干。。然后明天就SHOI了。。
【bzoj2330】: [SCOI2011]糖果 图论-差分约束-SPFA的更多相关文章
- BZOJ2330 SCOI2011 糖果 【差分约束】
BZOJ2330 SCOI2011 糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一 ...
- 【BZOJ】2330: [SCOI2011]糖果(差分约束+spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束运用了最短路中的三角形不等式,即d[v]<=d[u]+w(u, v),当然,最长 ...
- bzoj2330: [SCOI2011]糖果(差分约束)
差分约束裸题,a==b的话分别建a>=b a<=b的边就行.倒序加边不然会TLE是什么鬼 #include<iostream> #include<cstring> ...
- 【题解】 [SCOI2011]糖果 (差分约束)
懒得复制,戳我戳我 Solution: 首先考虑\(X=1\)的情况,我们其实只用用一下并查集把相等的点合为一个点 然后后面的四个式子我们就可以用差分约束了,就拿\(X=2\)的情况来说吧,我们用\( ...
- 洛谷P3275 [SCOI2011]糖果(差分约束,最长路,Tarjan,拓扑排序)
洛谷题目传送门 差分约束模板题,等于双向连0边,小于等于单向连0边,小于单向连1边,我太蒻了,总喜欢正边权跑最长路...... 看遍了讨论版,我是真的不敢再入复杂度有点超级伪的SPFA的坑了 为了保证 ...
- [luoguP3275] [SCOI2011]糖果(差分约束)
传送门 差分约束裸题 但是坑! 有一个点是长为10W的链,需要逆序加边才能过(真是玄学) 还有各种坑爹数据 开longlong ——代码 #include <cstdio> #includ ...
- 洛谷P3275 [SCOI2011]糖果_差分约束_判负环
Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; co ...
- Luogu3275 [SCOI2011]糖果 (差分约束)
逆序建超级源快十倍还行 #include <cstdio> #include <iostream> #include <cstring> #include < ...
- 2021.07.23 P3275 糖果(差分约束)
2021.07.23 P3275 糖果(差分约束) [P3275 SCOI2011]糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.为了满足更多更多约束条件,合适地 ...
随机推荐
- mysql字符类型
字符类型 #官网:https://dev.mysql.com/doc/refman/5.7/en/char.html #注意:char和varchar括号内的参数指的都是字符的长度 #char类型:定 ...
- 搭建了一个在线的机器学习webshell检测RESTful API
# 地址: http://118.190.147.89:5001/ 如果不能访问,联系sevck#jdsec.com # 说明: 简单的基于机器学习检测webshell:目前只支持php的检测 #使用 ...
- wireshark怎么抓包、wireshark抓包详细图文教程(转)
wireshark怎么抓包.wireshark抓包详细图文教程 wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必 ...
- Enumeration & Class & Structure
[Enumeration] 1.当一个枚举值类型已经确定后,可以使用shorter dot syntax来赋予其它值: 2.对一个枚举值switch的时候也可以使用short dot syntax: ...
- 【NOI2002】荒岛野人
[题解] 可以枚举m 那么任意两个野人之间有 c[i]+x*p[i]=c[j]+x*p[j] (mod m) 无解,或 x 的最小值<=min(l[i] , l[j]) 化为丢番图方程:(p[ ...
- opennebula kvm 创建VM oned报错日志
Thu Jul :: [ReM][D]: Req: UID: VirtualMachineDeploy result SUCCESS, Thu Jul :: [TM][D]: Message rece ...
- SpringMVC 课程第一天
SpringMVC第一天 框架课程 1. 课程计划 第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合My ...
- 新浪SAE高级开发者认证通过
如题,新浪SAE高级开发者认证通过,申请的方式为提交开源项目地址,用的是如下的项目 http://jqext.sinaapp.com/ 之前该项目是部署在 mopaas 上的,在拿到高级开发者资格后迁 ...
- jQuery基础教程-第8章-004完整代码
1. /****************************************************************************** Our plugin code c ...
- TTS技术
一.简介 TTS技术,TTS是Text To Speech的缩写,即"从文本到语音".它将计算机自己产生的.或外部输入的文字信息转变为可以听得懂的.流利的汉语口语(或者其他语言语音 ...