【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. 使用Easy-creds创建伪AP

    项目地址:https://github.com/brav0hax/easy-creds 打开文件夹 安装easy-creds root@sch01ar:/sch01ar/easy-creds# ./i ...

  2. 软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON

    全局变量 由于多个html页面,需要引用同一个变量.这个时候,需要定义一个全局变量!如何定义呢? 默认包含了mui的html文件都导入mui.js文件.那么将变量写在mui.js中,就可以实现所有页面 ...

  3. BurpSuite系列(九)----Comparer模块(比较器)

    一.简介 Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别.使用中的场景可能是: 1.枚举用户名过程中,对比分析登陆成功和失败时,服务器 ...

  4. Hibernate中的一些注解的学习

    1.@Column注解 就像@Table注解用来标识实体类与数据表的对应关系类似,@Column注解来标识实体类中属性与数据表中字段的对应关系. @Column注解一共有10个属性,这10个属性均为可 ...

  5. XHProf安装使用笔记

    编译安装 获取源代码包root@sourcjoy>wget http://pecl.php.net/get/xhprof-0.9.2.tgz解压root@sourcjoy>tar zxf ...

  6. PHP开发札记-星期/周操作中常用的日期获取方法

    本周一echo date('Y-m-d',(time()-((date('w')==0?7:date('w'))-1)*24*3600)); //w为星期几的数字形式,这里0为周日 本周日 echo ...

  7. 674. Longest Continuous Increasing Subsequence最长连续递增子数组

    [抄题]: Given an unsorted array of integers, find the length of longest continuous increasing subseque ...

  8. spring框架 使用 JdbcTemplate 对数据进行增删改查

    user=LF password=LF jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl driverClass=oracle.jdbc.driver.Ora ...

  9. c语言数组初始化 蛋疼

    一个一般性的结论 int a[100]={N}//N是一个大于等于0的整数 以上代码只会把a[0]初始化为N,其它内存单元都会被初始化为0 int a[100]={5} 这行代码它只会把a[0]初始化 ...

  10. 39.FORMAT() 函数

    FORMAT() 函数 FORMAT 函数用于对字段的显示进行格式化. SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_nam ...