bzoj2330糖果
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2330
差分约束裸题。练习用spfa判正环(一个点入队超过n次)。
据说有1e5个点连成一条链的数据,使得0点从1到n加边会TLE,而从n到1加边就300ms。为什么?
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e5+;
int n,m,head[N],xnt,dis[N],ct[N];
long long ans;
bool in[N];
struct Edge{
int next,to,w;
Edge(int n=,int t=,int w=):next(n),to(t),w(w) {}
}edge[N*];
bool spfa()
{
queue<int> q;
memset(dis,-,sizeof dis);
q.push();in[]=;dis[]=;
while(q.size())
{
int k=q.front();q.pop();in[k]=;
for(int i=head[k],v;i;i=edge[i].next)
if(dis[k]+edge[i].w>dis[v=edge[i].to])
{
if(++ct[v]>=n)return ;
dis[v]=dis[k]+edge[i].w;
if(!in[v])q.push(v),in[v]=;
}
}
return ;
}
int main()
{
scanf("%d%d",&n,&m);int k,x,y;
for(int i=n;i;i--)//
edge[++xnt]=Edge(head[],i,),head[]=xnt;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&k,&x,&y);
if(k==)
{edge[++xnt]=Edge(head[x],y,);head[x]=xnt;
edge[++xnt]=Edge(head[y],x,);head[y]=xnt;}
if(k==){if(x==y){printf("-1");return ;}
edge[++xnt]=Edge(head[x],y,),head[x]=xnt;}
if(k==)edge[++xnt]=Edge(head[y],x,),head[y]=xnt;
if(k==){if(x==y){printf("-1");return ;}
edge[++xnt]=Edge(head[y],x,),head[y]=xnt;}
if(k==)edge[++xnt]=Edge(head[x],y,),head[x]=xnt;
}
if(spfa())
{
printf("-1");return ;
}
for(int i=;i<=n;i++)ans+=dis[i];
printf("%lld",ans);
return ;
}
bzoj2330糖果的更多相关文章
- bzoj2330 糖果
Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- BZOJ2330 糖果题解 查分约束
BZOJ 2330 糖果题解 差分约束系统 + SPFA 题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description ...
- bzoj2330糖果——差分约束
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2330 差分约束,再建立一个源点0,向所有点连边权为1的边,表示每个人都会分到糖果: 答案较大 ...
- BZOJ2330 糖果[差分约束方案+spfa?/tarjan]
以往对于差分约束理解不是太深,导致这题屡次被坑,在此记录一下细节的理解. 差分约束实际上就是利用了spfa的一个特性:只要有$dis_y>dis_x+w_{x,y}$就松弛,直到所有边关系都满足 ...
- BZOJ4383 [POI2015]Pustynia[线段树优化建边+拓扑排序+差分约束]
收获挺大的一道题. 这里的限制大小可以做差分约束,从$y\to x$连$1$,表示$y\le x-1$即$y<x$,然后跑最长路求解. 但是,如果这样每次$k+1$个小区间每个点都向$k$个断点 ...
- 【BZOJ2330】【SDOI2012】糖果(差分约束,SPFA)
[BZOJ2330][SDOI2012]糖果 题面 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...
- BZOJ2330 SCOI2011 糖果 【差分约束】
BZOJ2330 SCOI2011 糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一 ...
- 【bzoj2330】: [SCOI2011]糖果 图论-差分约束-SPFA
[bzoj2330]: [SCOI2011]糖果 恩..就是裸的差分约束.. x=1 -> (A,B,0) (B,A,0) x=2 -> (A,B,1) [这个情况加个A==B无解的要特 ...
- 【BZOJ2330】糖果(差分约束系统,强连通分量,拓扑排序)
题意: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖 ...
随机推荐
- 【运维技术】shell脚本实现线程挂掉,自动重启功能
由于分布式系统的流行,服务器上面部署的项目都是多实例的.而我又希望有一个功能,当服务器出现异常情况能够自动重启实例. 所以我想到了使用shell脚本监控实例进程id,如果不存在的话,就重启对应的实例. ...
- NET Framework 4.0无法安装!
win7旗舰版无法安装CAD2012,安装NET Framework 4.0的时候就出现错误,安装NET Framework 4.0单独版也无法安装出现错误. 解决方法: 1.点击电脑桌面右下角的“开 ...
- oracle数据库中的异常处理
create or replace procedure prc_get_sex (stuname student.name%type) as stusex student.sex%type; begi ...
- MySQL "tinyInt1isBit or tinyint(1)" 相关问题解析
问题描述 tinyInt 的数据类型,在JAVA数据类型 和 MySQL的数据类型转换,要注意存储长度为 1 的情况.查询时,该字段对应的Java类型为Boolean 源数据: 读取后数据: 问题分析 ...
- Java堆(heap)、栈(stack)和队列的区别
Java里面Stack有两种含义: 一:数据结构 Stack,即java.util.Stack import java.util.Stack; import java.util.Iterator; i ...
- window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error
window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error 解决: 如果没有配置环境,在安 ...
- UVa 10534 波浪子序列(快速求LIS)
https://vjudge.net/problem/UVA-10534 题意:给定一个长度为n的整数序列,求一个最长子序列(不一定连续),使得该序列的长度为2k+1,前k+1个数严格递增,后k+1个 ...
- Python isspace()方法--转载
描述 Python isspace() 方法检测字符串是否只由空格组成. 语法 isspace()方法语法: str.isspace() 参数 无. 返回值 如果字符串中只包含空格,则返回 True, ...
- shell 判断一个字符串是否为空
test.sh #!/bin/bash echo "enter the string:" read filename if test $filename ; then echo & ...
- 服务器jupyter配置与ssh远程登录
jupyter 配置 首先安装jupyter,在anaconda套装中已包含,如果安装的是精简版的miniconda则通过conda install jupyter安装. 生成配置文件 jupyter ...