传送门

差分约束裸题

但是坑!

有一个点是长为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 ;
}

最新文章

  1. 使用Notepad++代替笨拙的Arduino IDE
  2. BestCoder Round #74
  3. .NET开源工作流RoadFlow-流程设计-流程步骤设置-策略设置
  4. WIN7中oracle10g的安装注意事项
  5. Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
  6. 使用OpenXml实现生成数据字典文档(beta)
  7. .Net语言中关于AOP 的实现详解
  8. Minicom配置及使用详解
  9. docker多主机网络方案
  10. JavaScript 基本类型值-String类型
  11. web 直播&amp;即时聊天------阿里云、融云(三)
  12. 从开发者角度解析 Android N 新特性!
  13. 【转】js 好的程序设计,应该什么时候使用 try catch 呢?
  14. tp5 删除服务器文件
  15. github仓库主页介绍、用git管理本地仓库和github仓库、搭建网站
  16. github使用步骤
  17. 【BZOJ4025】 二分图(线段树分治)
  18. fatal error: google/protobuf/arena.h:没有那个文件或目录
  19. python基础易错总结
  20. ElasticSearch 2 (17) - 深入搜索系列之部分匹配

热门文章

  1. 【HDU 4864】 Task
  2. Linux搭建tomcat文件服务器
  3. github fork项目更改后与原作者同步更新
  4. BZOJ 3998 后缀数组
  5. python中的深拷贝和浅拷贝(面试题)
  6. cloudera-scm-server启动时出现Caused by: java.io.FileNotFoundException: /var/lib/cloudera-scm-server/.keystore (No such file or directory)问题解决方法(图文详解)
  7. css3通过scale()实现放大功能、通过rotate()实现旋转功能
  8. TensorFlow学习---入门(一)-----MNIST机器学习
  9. 移动web——bootstrap响应式工具
  10. JS——tab函数封装