题面

题意:有2个人,都去坐地铁,但是他们相差了X分钟,但是他们也一直在通讯,于是你就知道,你在AB站点中间的时候,他在CD中间,(B一定等于A+1或者A,同理D也是),问你每2个站之间需要的时间的一种方案使得满足上面那些话,满足不了输出IMPOSSIBLE.(站台从1到N,N<=2000)

题解:典型的差分约束 我们回忆一下,对于不等式a-b<=x  我们build(a,b,x);

那么对于本题

if (a==b && c==d) { build(d,a,-x); build(b,c,x); }

if (a==b && c!=d) { build(d,a,-x-1); build(b,c,x-1); }

   if (a!=b) { build(d,a,-x-1); build(b,c,x-1); }

由于要保证图的连通性,记得加一个超级源点,向每个点加1条边

而且是车站,实际问题,每相邻2个站之间,至少需要1分钟.

顺便用了dfs版的spfa板子,跑得飞快

 #include<bits/stdc++.h>
#define N 2005
#define M 10005
const long long inf=0x3f3f3f3f3f3f3f3f;
typedef long long lld;
using namespace std;
struct rec
{
int go,next;
long long v;
}eg[M];
int head[N],que[N],nn,k,a,b,c,p,n,du[N];
lld dis[N];
bool used[N];
void read(int &a)
{
a=;
char c=getchar();
while (c<=) c=getchar();
while (c>) a=a*+c-'',c=getchar();
}
void build(int a,int b,long long c)
{
p++;
eg[p].go=b;
eg[p].next=head[a];
eg[p].v=c;
head[a]=p;
}
stack<int>S;
int spfa()
{
for (int i=;i<=n;i++)
{
S.push(i);
du[i]=;
used[i]=;
dis[i]=;
}
while (!S.empty())
{
int v=S.top();
S.pop();
used[v]=;
for (int u=head[v];u;u=eg[u].next )
if (dis[eg[u].go]>dis[v]+eg[u].v)
{
dis[eg[u].go]=dis[v]+eg[u].v;
if ((++du[eg[u].go])>nn)
{
printf("IMPOSSIBLE");
return ;
}
if (!used[eg[u].go]) S.push(eg[u].go ) ;
}
}
return ;
}
int T,x,d,tt;
int main()
{
int tt=;
scanf("%d",&T);
while (T--)
{
p=;
memset(que,,sizeof(que));
memset(used,,sizeof(used));
memset(du,,sizeof(du));
memset(head,,sizeof(head));
while (!S.empty()) S.pop();
read(nn);read(k);read(x);
for (int i=;i<=k;i++)
{
read(a);read(b);read(c);read(d);
if (a==b && c==d)
{
build(d,a,-x);
build(b,c,x);
}else
if (a==b && c!=d)
{
build(d,a,-x-);
build(b,c,x-);
}else
{
build(d,a,-x-);
build(b,c,x-);
}
}
n=nn+;
for (int i=;i<=nn;i++) build(n,i,);
for (int i=;i<nn;i++) build(i+,i,-);
tt++;
printf("Case #%d: ",tt);
int why=spfa();
if (why) for (int i=;i<=nn;i++) printf("%lld ",dis[i]-dis[i-]);
printf("\n");
}
return ;
}

Hdu-6252 2017CCPC-Final J.Subway Chasing 差分约束的更多相关文章

  1. hdu 4598 Difference(奇圈判定+差分约束)

    这是通化邀请赛的题,当时比赛的时候还完全没想法呢,看来这几个月的训练还是有效果的... 题意要求(1) |ai| < T for all i   (2) (vi, vj) in E <=& ...

  2. hdu 1531(差分约束)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1531 差分约束的题之前也碰到过,刚好最近正在进行图论专题的训练,就拿来做一做. ①:对于差分不等式,a ...

  3. I - 动物狂想曲 HDU - 6252(差分约束)

    I - 动物狂想曲 HDU - 6252 雷格西桑和路易桑是好朋友,在同一家公司工作.他们总是一起乘地铁去上班.他们的路线上有N个地铁站,编号从1到N.1站是他们的家,N站是公司. 有一天,雷格西桑起 ...

  4. POJ 1364 / HDU 3666 【差分约束-SPFA】

    POJ 1364 题解:最短路式子:d[v]<=d[u]+w 式子1:sum[a+b+1]−sum[a]>c      —      sum[a]<=sum[a+b+1]−c−1  ...

  5. hdu 4598 差分约束

    思路:首先就是判断是否有奇环,若存在奇环,则输出No. 然后用差分约束找是否符合条件. 对于e(i,j)属于E,并且假设顶点v[i]为正数,那么v[i]-v[j]>=T--->v[j]-v ...

  6. HDU 3666 THE MATRIX PROBLEM (差分约束)

    题意:给定一个最大400*400的矩阵,每次操作可以将某一行或某一列乘上一个数,问能否通过这样的操作使得矩阵内的每个数都在[L,R]的区间内. 析:再把题意说明白一点就是是否存在ai,bj,使得l&l ...

  7. 差分约束 HDU - 1384 HDU - 3592 HDU - 1531 HDU - 3666

    Intervals Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. HDU 3666 THE MATRIX PROBLEM (差分约束 深搜 & 广搜)

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  9. hdu 3666(差分约束,手动栈解决超时问题)

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

随机推荐

  1. 多种效果进度指示层效果iOS源码项目

    该源码是一个多种效果进度指示层效果源码案例,源码KVNProgress,KVNProgress提供多种效果的进度指示层,有半透明效果,也支持全屏显示.指示层还高度支持自定义,可以按自己的需求定制.效果 ...

  2. C# 从小到大排列

    "; ; var ss = ""; ;i<str.Length;i++) { var s0 = str[i].ToString(); var s1 = (js).T ...

  3. matlab学习下拉菜单

    用matlab添加listbox控件 修改string和value值,value为几就对应第几行字符串 添加button按钮,将string值改为“选择x轴参数”,字体大小为10 再添加一个按钮,将s ...

  4. BZOJ2251 [2010Beijing Wc]外星联络 后缀数组 + Height数组

    Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin ...

  5. Dell R720修改远程管理口的密码

    今天有个客户需要通过远程管理口来查看系统事件日志,但是他们把初始密码改过并且还给忘记了.后来我决定进操作系统(cent os)进行修改.整个过程很简单,进入系统后只需要三个步骤就解决问题了 1.安装软 ...

  6. 9.在idea中创建Maven项目

    1.新建maven WEB项目 打开-File-New-Project 点击NEXT 2.选择项目组,并给项目命名 3.选择maven路径 添加的配置为 archetypeCatalog=intern ...

  7. WOJ 1538 B - Stones II

    Problem 1538 - B - Stones IITime Limit: 1000MS Memory Limit: 65536KB Total Submit: 416 Accepted: 63 ...

  8. 向现有的磁盘组加入/删除ASM磁盘

    ASM磁盘组支持动态扩展,我们可以向现有的磁盘组动态加入新的磁盘,新磁盘加入后,Oracle通过后台RBAL进行Rebalance,将当前的数据均衡到新增加的磁盘上.Drop磁盘亦会Rebalance ...

  9. 百度之星2014初赛 - 1002 - Grids

    先上题目: Grids Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  10. 洛谷——P1361 小猫爬山

    https://www.luogu.org/problem/show?pid=1361#sub 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲 ...