【bzoj2330】: [SCOI2011]糖果

恩。。就是裸的差分约束。。

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的更多相关文章

  1. BZOJ2330 SCOI2011 糖果 【差分约束】

    BZOJ2330 SCOI2011 糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一 ...

  2. 【BZOJ】2330: [SCOI2011]糖果(差分约束+spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束运用了最短路中的三角形不等式,即d[v]<=d[u]+w(u, v),当然,最长 ...

  3. bzoj2330: [SCOI2011]糖果(差分约束)

    差分约束裸题,a==b的话分别建a>=b a<=b的边就行.倒序加边不然会TLE是什么鬼 #include<iostream> #include<cstring> ...

  4. 【题解】 [SCOI2011]糖果 (差分约束)

    懒得复制,戳我戳我 Solution: 首先考虑\(X=1\)的情况,我们其实只用用一下并查集把相等的点合为一个点 然后后面的四个式子我们就可以用差分约束了,就拿\(X=2\)的情况来说吧,我们用\( ...

  5. 洛谷P3275 [SCOI2011]糖果(差分约束,最长路,Tarjan,拓扑排序)

    洛谷题目传送门 差分约束模板题,等于双向连0边,小于等于单向连0边,小于单向连1边,我太蒻了,总喜欢正边权跑最长路...... 看遍了讨论版,我是真的不敢再入复杂度有点超级伪的SPFA的坑了 为了保证 ...

  6. [luoguP3275] [SCOI2011]糖果(差分约束)

    传送门 差分约束裸题 但是坑! 有一个点是长为10W的链,需要逆序加边才能过(真是玄学) 还有各种坑爹数据 开longlong ——代码 #include <cstdio> #includ ...

  7. 洛谷P3275 [SCOI2011]糖果_差分约束_判负环

    Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; co ...

  8. Luogu3275 [SCOI2011]糖果 (差分约束)

    逆序建超级源快十倍还行 #include <cstdio> #include <iostream> #include <cstring> #include < ...

  9. 2021.07.23 P3275 糖果(差分约束)

    2021.07.23 P3275 糖果(差分约束) [P3275 SCOI2011]糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.为了满足更多更多约束条件,合适地 ...

随机推荐

  1. SQL2008R转SQL2005

    1.SQL2008R生成 任务--生成脚本 “为服务器版本编写脚本”:SQL Server 2005 “要编写脚本的数据类型”:架构和数据 2.SQL2005还原超大sql语句文件 运行-cmd: o ...

  2. Build Assetbundle出错:An asset is marked as dont save, but is included in the build

    前天Build Assetbundle的时候出错了,导致打包失败,具体日志内容如下: An asset is marked as dont save, but is included in the b ...

  3. oracle显示数据库名和表名

    oracle查看表名 select table_name from user_tables; select table_name from dba_tables; select * from all_ ...

  4. babel-preset-latest使用介绍

    本文介绍babel中的babel-preset-latest插件 简介 该插件的作用是包含了每年的js代码转换规则 默认包含es2015,es2016,es2017,默认对这些代码都会进行转码,从而方 ...

  5. temp3

  6. 19-从零玩转JavaWeb-继承关系与方法覆盖

    配套视频详解 继承子类与父类的关系 继承子类与父类的关系代码演示 继承方法的覆盖 方法覆盖原则 一.继承编写过程   二.子类可以继承父类当中哪些内容 可以自行把修饰符换下, 然后查看子类能不能访问 ...

  7. 用插件NPOI读写excel

    1.用插件NPOIusing NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HSSF.UserModel; public class E ...

  8. Base -快捷键|通配符|特殊符号|输出(正确与错误的保存)

    curl + a   移动光标到行首. curl +e    移动光标到行尾. curl +k    剪切光标所在位置到行末的字符. curl+u    剪切光标所在位置到行首的字符. curl +y ...

  9. Linux下安装Pcntl PHP扩展

    //解压源码包 [root@centos src]# tar -zxvf php-5.5.35.tar.gz //进入pcntl扩展库 [root@centos src]# cd php-5.5.35 ...

  10. Linux 下安装Yaf扩展

    1.在官网下载了yaf扩展包 yaf-3.0.3.tgz 2.开始安装yaf扩展 tar zxvf yaf-3.0.3.tgz cd yaf-3.0.3 phpize ./configure --wi ...