题意

有n头奶牛从1到n编号,按照编号顺序站成一排,有可能有多头奶牛站在同一个坐标上。一些奶牛互相喜欢,所以他们的距离不能大于某个距离,一些奶牛互相讨厌,所以他们的距离不能小于某个距离,请计算如果可能的话1到n的最大距离是多少

分析

标准的差分约束的裸题。题中的条件可以做如下转化

1.A和B的距离不得超过x:  B-A<=x

2.C和D的距离不得小于y:C-D>=y也就是D-C<=-y

3.奶牛按照编号顺序排序:位置 pos[i+1]-pos[i]>=0也就是pos[i]-pos[i+1]<=0

这样把关系全部变成了小于关系,求最大距离的话建图以后跑一个最短路就行。

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <queue> using namespace std;
const int maxn=+;
const int maxm=+;
const int INF=; int head[maxn],Next[maxm],to[maxm],val[maxm];
int n,ml,md,sz;
void add_edge(int a,int b,int w){
++sz;
to[sz]=b;
val[sz]=w;
Next[sz]=head[a];
head[a]=sz;
}
int a,b,w;
int spfa(){
int d[maxn],vis[maxn],cnt[maxn];
memset(vis,,sizeof(d));
memset(cnt,,sizeof(cnt));
for(int i=;i<=n;i++)d[i]=INF;
queue<int>q;
q.push(n);
d[n]=;vis[n]=;cnt[n]=;
while(!q.empty()){
int u=q.front();q.pop();vis[u]=;
// cout<<u<<endl;
for(int i=head[u];i;i=Next[i]){
int v=to[i];
if(d[v]>d[u]+val[i]){
d[v]=d[u]+val[i];
if(!vis[v]){
vis[v]=;
q.push(v);
cnt[v]++;
if(cnt[v]>n){
return -;
}
}
}
}
}
if(d[]==INF)
return -;
return d[];
}
int main(){
scanf("%d%d%d",&n,&ml,&md);
for(int i=;i<=ml;i++){
scanf("%d%d%d",&a,&b,&w);
add_edge(b,a,w);
}
for(int i=;i<=md;i++){
scanf("%d%d%d",&a,&b,&w);
add_edge(a,b,-w);
}
for(int i=;i<n;i++){
add_edge(i,i+,);
}
int ans=spfa();
printf("%d",ans); return ;
}

最新文章

  1. git &amp;github 快速入门
  2. Linux Nano命令
  3. 让 select 的 option 标签支持事件监听(如复制操作)
  4. iOS 图片的按照比例拉伸
  5. JS子父窗口互相操作取值赋值的方法介绍
  6. BOM里的window命令; cookie的用法
  7. C#创建文件夹
  8. 用windbg+sos找出程序中谁占用内存过高,谁占用CPU过高(转载)
  9. git reset 理解
  10. Deme_遥感控制物体移动(涉及遮罩,小摄像机跟随)
  11. HDU1754(线段树)
  12. HDU 5573 Binary Tree(找规律)
  13. CCLayer在Touch事件(Standard Touch Delegate和Targeted Touch Delegate)
  14. opengl微开发之1-从零開始
  15. oracle练习--@余生请指教多
  16. 关于HTML文档的文档模式
  17. Spring Boot 全局异常处理
  18. @JsonSerialize的使用
  19. CF986C AND Graph
  20. [Java] HashMap 源码简要分析

热门文章

  1. Android 进阶10:进程通信之 Messenger 使用与解析
  2. phpcms v9 tags调用方法
  3. [leetcode]_Interleaving String
  4. Python基本特殊方法之__new__
  5. Microsoft office2007免费版下载(安装 + 破解)
  6. deep Learning 之入门一 (ps:知乎上看到的大佬写的非常好,所以自己记录下)
  7. UVA11178 Morley&#39;s Theorem
  8. numpy之通用函数ufunc
  9. JAVA中常见异常类
  10. 使用Collections类对 集合排序