博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ】1731: [Usaco2005 dec]Layout 排队布局
阅读量:7095 次
发布时间:2019-06-28

本文共 1741 字,大约阅读时间需要 5 分钟。

【题意】给定按编号顺序站成一排的牛,给定一些约束条件如两牛距离不小于或不大于某个值,求1和n的最大距离。无解输出-1,无穷解输出-2。

【算法】差分约束+最短路

【题解】图中有三个约束条件,依次分析:

①坐标顺序和编号顺序一致【一定一定要记得这个约束条件】

xi-xi-1>=0

i向-1连边0

②两牛距离不大于距离L

xj-xi<=L

i向j连边L

③两牛距离不小于距离D

xj-xi>=D即xi-xj<=-D

j向i连边-D

 

连边完毕,通过跑最短路得到起点和终点的直接约束xT-xS<=d,d就是1到n的最大值。

注意循环队列while(head!=tail)

检测负环可以用【点的入队次数>n】和【到点步数>n】两种方法。一起用也资瓷=w=。

#include
#include
#include
using namespace std;const int maxn=1010;int n,m,k,tot=0;int first[maxn],step[maxn],q[maxn],d[maxn];bool vis[maxn];struct edge{
int v,w,from;}e[maxn*maxn];void insert(int u,int v,int w){tot++;e[tot].v=v;e[tot].w=w;e[tot].from=first[u];first[u]=tot;}bool spfa(){ memset(d,0x3f,sizeof(d)); memset(vis,0,sizeof(vis)); int head=0,tail=1; q[head]=1;vis[1]=1;d[1]=0; bool p=1; while(head!=tail){
// int x=q[head++];if(head>n)head=0; for(int i=first[x];i;i=e[i].from)if(d[x]+e[i].w
n){p=0;break;} if(!vis[e[i].v]){ if(d[e[i].v]
<0)head=n;q[head]=e[i].v;} else{q[tail++]=e[i].v;if(tail>n)tail=0;} vis[e[i].v]=1; } } vis[x]=0; } return p;} int main(){ scanf("%d%d%d",&n,&m,&k); int u,v,w; for(int i=2;i<=n;i++)insert(i,i-1,0); for(int i=1;i<=m;i++){ scanf("%d%d%d",&u,&v,&w); if(u>v)swap(u,v); insert(u,v,w); } for(int i=1;i<=k;i++){ scanf("%d%d%d",&u,&v,&w); if(u>v)swap(u,v); insert(v,u,-w); } if(spfa()){ if(d[n]==0x3f3f3f3f)printf("-2");else printf("%d",d[n]); }else printf("-1"); return 0;}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/7690509.html

你可能感兴趣的文章
java面试-Java并发编程(八)——闭锁、同步屏障、信号量详解
查看>>
viewport的一些事
查看>>
saltstack模块之user及group相关模块
查看>>
java面试-计算机网络传输层知识点全覆盖
查看>>
sysmail_configure_sp 更改数据库邮件的配置设置
查看>>
千呼万唤始出来:Apache Spark2.0正式发布
查看>>
linux编译安装所需
查看>>
dns管理
查看>>
最大子数列之和
查看>>
heartbeat+lvs+Keepalive
查看>>
UUID
查看>>
SQL*Loader使用方法
查看>>
IE下input框内有一把小叉子
查看>>
解决mysql slave同步问题
查看>>
聚类质量评估指标
查看>>
php 转化smiles为分子式
查看>>
运行项目时,报警 Fetching JDBC Connection from DataSource
查看>>
企业级Web Nginx 服务优化(5)
查看>>
新安装apache+php环境打开网页空白【已解决】
查看>>
rhel7搭建可用实验环境
查看>>