【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.为了满足更多更多约束条件,合适地 ...
随机推荐
- eval是做什么的?
它的功能是把对应的字符串解析成js代码并运行, 应该避免使用eval,因为不安全,非常耗性能(2次,一次解析成js语句,一次执行) 注意:在项目里写js代码的时候,禁止使用的,因为有安全因素.
- Win7开始菜单所在目录
C:\ProgramData\Microsoft\Windows\Start Menu\Programs 可在此目录下归类,建文件夹
- Django Rest Framework 3
目录 一.版本 二.解析器 三.序列化 四.请求数据验证 一.版本 程序也来越大时,可能通过版本不同做不同的处理 没用rest_framework之前,我们可以通过以下这样的方式去获取. 1 clas ...
- 如何重置Oracle服务器ILOM中root用户的密码
在ILOM中,root用户的缺省密码是changeme. 为了系统的安全性,通常情况下需要修改root密码. 如果忘了密码,可以参考以下步骤重置root密码. 用串口线连接Oracle服务器ILOM ...
- Android 4 学习(12):Linkify & Broadcast event
参考<Professional Android 4 Development> Linkify Linkfy类可以在Text View中创建超链接.匹配LInkify中正则表达式的文本将被L ...
- 使用JAVA爬取网页图片
经过之前的HttpURLConnection还有各种流的结束,已经可以开始理解怎么下载网页上的一张图片了. 对各种流不理解的话,可以翻翻前面的随笔,讲得都比较详细.在此就不细讲了. 主要流程: 1.H ...
- a标签:鼠标指针变成文本输入图形
今天我在使用a标签的时候,鼠标放在上面的时候总是显示文本输入的图形,不是小手的形状,找了好久的原因才发现由于我给它绑定了一个click事件,在事件里面进行了跳转,然后把 href ="#&q ...
- web页面在ios下不支持fixed可用absolute替代的方案
本文引用出处:http://www.cnblogs.com/PeunZhang/p/3553020.html. 对于 ios4 和 android2.2 以下不支持 position:fixed 的问 ...
- android 拍照+拍照button 以及返回按钮布局
公司最近做一个项目拍照总是崩溃,所以决定自己写一个拍照的方法,在网上调研一番,写了一个简单demo,现共享如下 主要CameraActivity CameraActivity package com. ...
- Linux问题:开启网关
1 开启网关 1.1 问题描述 虚拟机每次重启后,都需要利用 ifup eth0 来手动开启网关,否则获取到的IP地址为回环127.0.0.1 1.2 解决办法 修改ifcfg-eth0中 ONBOO ...