[luoguP3275] [SCOI2011]糖果(差分约束)
2024-09-08 13:51:07
差分约束裸题
但是坑!
有一个点是长为10W的链,需要逆序加边才能过(真是玄学)
还有各种坑爹数据
开longlong
——代码
#include <cstdio>
#include <cstring>
#include <iostream>
#define N 200001 int n, k, cnt;
long long ans, dis[N];
int head[N], to[N << ], val[N << ], next[N << ];
bool vis[N]; inline int read()
{
int x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} inline void add(int x, int y, int z)
{
to[cnt] = y;
val[cnt] = z;
next[cnt] = head[x];
head[x] = cnt++;
} inline bool spfa(int u)
{
int i, v;
vis[u] = ;
for(i = head[u]; i ^ -; i = next[i])
{
v = to[i];
if(dis[v] > dis[u] + val[i])
{
dis[v] = dis[u] + val[i];
if(vis[v]) return ;
else if(!spfa(v)) return ;
}
}
vis[u] = ;
return ;
} int main()
{
int i, j, x, y, z;
n = read();
k = read();
memset(head, -, sizeof(head));
for(i = n; i >= ; i--) add(, i, -);
for(i = ; i <= k; i++)
{
z = read();
x = read();
y = read();
if(z == ) add(x, y, ), add(y, x, );
if(z == )
{
add(x, y, -);
if(x == y)
{
puts("-1");
return ;
}
}
if(z == ) add(y, x, );
if(z == )
{
add(y, x, -);
if(x == y)
{
puts("-1");
return ;
}
}
if(z == ) add(x, y, );
}
if(spfa())
{
for(i = ; i <= n; i++) ans -= dis[i];
printf("%lld\n", ans);
}
else puts("-1");
return ;
}
最新文章
- 使用Notepad++代替笨拙的Arduino IDE
- BestCoder Round #74
- .NET开源工作流RoadFlow-流程设计-流程步骤设置-策略设置
- WIN7中oracle10g的安装注意事项
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- 使用OpenXml实现生成数据字典文档(beta)
- .Net语言中关于AOP 的实现详解
- Minicom配置及使用详解
- docker多主机网络方案
- JavaScript 基本类型值-String类型
- web 直播&;即时聊天------阿里云、融云(三)
- 从开发者角度解析 Android N 新特性!
- 【转】js 好的程序设计,应该什么时候使用 try catch 呢?
- tp5 删除服务器文件
- github仓库主页介绍、用git管理本地仓库和github仓库、搭建网站
- github使用步骤
- 【BZOJ4025】 二分图(线段树分治)
- fatal error: google/protobuf/arena.h:没有那个文件或目录
- python基础易错总结
- ElasticSearch 2 (17) - 深入搜索系列之部分匹配
热门文章
- 【HDU 4864】 Task
- Linux搭建tomcat文件服务器
- github fork项目更改后与原作者同步更新
- BZOJ 3998 后缀数组
- python中的深拷贝和浅拷贝(面试题)
- cloudera-scm-server启动时出现Caused by: java.io.FileNotFoundException: /var/lib/cloudera-scm-server/.keystore (No such file or directory)问题解决方法(图文详解)
- css3通过scale()实现放大功能、通过rotate()实现旋转功能
- TensorFlow学习---入门(一)-----MNIST机器学习
- 移动web——bootstrap响应式工具
- JS——tab函数封装