题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1731

对差分约束理解更深。还发现美妙博客:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html

原来不是一定要有一个源点向每个点连0边。而且“不可到达”原来是那个意思。

UPD(过了一会儿): vis[ ]被自己蒟掉了……但好在spfa也可以看松弛次数!一直以为只能看入队次数。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const int N=1005,M=2e4+5+N;
int n,ml,md,hd[N],xnt,to[M],nxt[M],w[M],cnt[N];
ll dis[N];
bool vis[N];
queue<int> q;
int rdn()
{int ret=0;bool fx=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')fx=0;ch=getchar();}while(ch>='0'&&ch<='9') ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar();return fx?ret:-ret;
}
void add(int x,int y,int z)
{to[++xnt]=y; nxt[xnt]=hd[x]; hd[x]=xnt; w[xnt]=z;
}
ll spfa()
{memset(dis,0x3f,sizeof dis); dis[1]=0; cnt[1]=1;q.push(1); vis[1]=1;  ll INF=dis[2];while(q.size()){int k=q.front(); q.pop(); vis[k]=0;for(int i=hd[k],v;i;i=nxt[i])if(dis[v=to[i]]>dis[k]+w[i]){dis[v]=dis[k]+w[i];if(!vis[v]){q.push(v);cnt[v]++;if(cnt[v]==n) return -1;}}}return dis[n]==INF?-2:dis[n];
}
int main()
{n=rdn(); ml=rdn(); md=rdn();for(int i=1,u,v,z;i<=ml;i++){u=rdn(); v=rdn(); z=rdn();add(u,v,z);}for(int i=1,u,v,z;i<=md;i++){u=rdn(); v=rdn(); z=rdn();add(v,u,-z);}for(int i=2;i<=n;i++) add(i,i-1,0);printf("%lld\n",spfa());return 0;
}

转载于:https://www.cnblogs.com/Narh/p/9704776.html

bzoj 1731 [Usaco2005 dec]Layout 排队布局——差分约束相关推荐

  1. bzoj 1731: [Usaco2005 dec]Layout 排队布局【差分约束】

    差分约束裸题,用了比较蠢的方法,先dfs_spfa判负环,再bfs_spfa跑最短路 注意到"奶牛排在队伍中的顺序和它们的编号是相同的",所以\( d_i-d_{i-1}>= ...

  2. bzoj 1673: [Usaco2005 Dec]Scales 天平(DFS)

    1673: [Usaco2005 Dec]Scales 天平 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 695  Solved: 253 [Subm ...

  3. bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士(BFS)

    1671: [Usaco2005 Dec]Knights of Ni 骑士 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 416  Solved: 26 ...

  4. bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)

    1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 941  Solved ...

  5. bzoj 3436: 小K的农场(差分约束)

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1824  Solved: 810 [Submit][Status][Disc ...

  6. BZOJ 1673 [Usaco2005 Dec]Scales 天平:dfs 启发式搜索 A*搜索

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1673 题意: 有n个砝码(n <= 1000),重量为w[i]. 你要从中选择一些砝 ...

  7. bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士

    题目链接 题目背景: 贝茜遇到了一件很麻烦的事:她无意中闯入了森林里的一座城堡,如果她想回家,就必须穿过这片由骑士们守护着的森林.为了能安全地离开,贝茜不得不按照骑士们的要求,在森林寻找一种特殊的灌木 ...

  8. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)

    BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详(并不)解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多 ...

  9. EasyUI -- Layout(布局)

    第一章 介绍 EasyUI – Layout(布局)将布局容器分成了5个区域,分别是:east(东).west(西).south(南).north(北)和center(中).center(中)区域是必 ...

最新文章

  1. 敏捷项目管理工具实践
  2. python软件使用教程-python用什么软件编写
  3. 详解SOA五种基本架构模式
  4. dockerfile php环境变量,docker - 在Dockerfile中,如何更新PATH环境变量?
  5. python while 循环 if elif else 判断
  6. java 获取光标_如何在java中使用Windows API获取当前鼠标光标类型?
  7. C++ String封装
  8. 基于c的xml文件解析(转)
  9. 计算机上64位数和32位数,一不小心就蓝屏?安装win10系统和软件,你选32位还是64位?...
  10. 1481c语言合法标识符,c语言试题答案集
  11. 计算机的串口波特率,串口常用参数
  12. 前端性能优化gzip压缩
  13. set_ideal_network和set_dont_touch_network
  14. 40G SR4 vs 40G BIDI vs 40G UNIV:你选哪个?
  15. 微信联合登录全攻略,早期测试用户的详尽经验总结!
  16. [转]不是高手别碰我,VIM怎么舍得我难过
  17. 微信小程序跳过第三方的_微信小程序可以跳转第三方页面吗
  18. #include ““和#include <>区别
  19. firm,company, corporation, enterprise, group等的区别
  20. javascript案例5——壁纸切换、背景换肤

热门文章

  1. 华为云王红新_Veritas与华为云签署合作谅解备忘录推进云数据安全进阶
  2. 目标检测--Beyond Skip Connections: Top-Down Modulation for Object Detection
  3. 【Dual-Path-RNN-Pytorch源码分析】Segmentation
  4. Linux初学(Linux命令行的使用)
  5. centos创建禁止登录用户
  6. Vue打包之后会出现.map文件用处
  7. Redisson 分布式锁源码 11:Semaphore 和 CountDownLatch
  8. 2、使用 kubeadm 方式快速部署K8S集群
  9. MySQL手机统计信息_MySQL统计信息
  10. katalon进行app测试_使用Katalon Studio创建你的第一个API测试