题面

题意:有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. MYSQL 45道练习题

    学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示.用S ...

  2. js基础标签用法

    js是脚本语言,开始标签<script type="text/javascript">.......结束标签</script>.script通常放在< ...

  3. DHCP 和 MDT 分开服务器的设置方法

    DHCP设置 043:供应商特定信息:01 04 00 00 00 00 FF 060:PXEClient:PXEClient 066:启动服务器主机名:IP 067:启动文件名:\Boot\x86\ ...

  4. 备份xx

    https://www.tuicool.com/articles/V3EBzev https://www.tuicool.com/topics/11080087?st=0&lang=1& ...

  5. C# Cookies设置和读取

    public ActionResult Index() { #region 写入Cookies HttpCookie cookie = new HttpCookie("CookieName& ...

  6. SharePoint Designer 2013 开启新式验证(Modern Authentication)

    首先安装office 2013全家桶 再安装SharePoint Designer 2013 安装完之后,去windows检查更新,并把所有需要更新的都更新了 (更新之后我还通过KMS激活了offic ...

  7. BZOJ 2006 [NOI2010]超级钢琴 (堆+主席树)

    题面:BZOJ传送门 洛谷传送门 让你求前$K$大的子序列和,$n\leq 5*10^{5}$ 只想到了个$nlog^{2}n$的做法,似乎要被卡常就看题解了.. 好神奇的操作啊,我傻了 我们把序列和 ...

  8. [luogu1971 NOI2011] 兔兔与蛋蛋游戏 (二分图博弈)

    传送门 Solution 补一篇二分图博弈 这个博客写的很详细qwq: https://www.cnblogs.com/maijing/p/4703094.html Code //By Menteur ...

  9. ldap 用户组和用户(4)

    Posixgroup用户组属性 默认情况下openldap的用户组属性是Posixgroup,Posixgroup用户组属性和用户没有实际的对应关系.如果我们一定要把Posixgroup和user对应 ...

  10. phpcms_完整版

    {pc:content action="category" catid="0" num="6" siteid="$siteid&q ...