https://vjudge.net/contest/400914#problem/J
差分约束系统,设 T i T_i Ti​是到达 i i i站的时刻,则 T i − T i − 1 > = 1 T_i-T_{i-1}>=1 Ti​−Ti−1​>=1
对于每个条件,若 a = = b & & c = = d a==b\&\&c==d a==b&&c==d,则 T d − T b = = 1 T_d-T_b==1 Td​−Tb​==1,否则 T d − T a > X & & T c − T b < X T_d-T_a>X\&\&T_c-Tb<X Td​−Ta​>X&&Tc​−Tb<X
据此建图,再加一个超级源,连到每个点,边权为0,使图连通,跑一遍spfa,若有负环,则失败,否则可行。

#include<bits/stdc++.h>
using namespace std;
const int maxn=2000+100;
const int INF=0x3f3f3f3f;int T,n,m,x;
int d[maxn],inq[maxn],cnt[maxn];
struct Edge{int to,dist;
};
vector<Edge> edges;
vector<int> G[maxn];bool SPFA(int s)
{queue<int>Q;memset(inq,0,sizeof(inq));memset(cnt,0,sizeof(cnt));for(int i=1;i<=n;i++)d[i]=INF;d[s]=0;inq[s]=1;Q.push(s);while(!Q.empty()){int u=Q.front();Q.pop();inq[u]=false;for(int i=0;i<G[u].size();i++){Edge& e=edges[G[u][i]];if(d[u]<INF && d[e.to]>d[u]+e.dist){d[e.to]=d[u]+e.dist;if(!inq[e.to]){Q.push(e.to);inq[e.to]=1;if(++cnt[e.to]>n)return false;}}}}return true;
}void AddEdge(int a,int b,int c)
{edges.push_back((Edge){b,c});G[a].push_back(edges.size()-1);
}int main()
{//freopen("input.in","r",stdin);cin>>T;for(int kase=1;kase<=T;kase++){cin>>n>>m>>x;edges.clear();for(int i=1;i<=n;i++)G[i].clear();for(int i=1;i<=n;i++)AddEdge(0,i,0);for(int i=2;i<=n;i++)AddEdge(i,i-1,-1);for(int i=1;i<=m;i++){int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);if(a==b&&c==d)AddEdge(c,a,-x),AddEdge(a,c,x);else AddEdge(d,a,-x-1),AddEdge(b,c,x-1);}if(!SPFA(0))printf("Case #%d: IMPOSSIBLE\n",kase);else{printf("Case #%d:",kase);for(int i=2;i<=n;i++)printf(" %d",d[i]-d[i-1]);putchar('\n');}}return 0;
}

HDU6254 Subway Chasing相关推荐

  1. J - Subway Chasing ( 差分约束 )

    J - Subway Chasing ( 差分约束 ) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题意:有1~n号地铁站( Alice和B ...

  2. 17 哈尔滨CCPC final J - Subway Chasing 差分约束

    题目:https://vjudge.net/problem/HDU-6252 Mr. Panda and God Sheep are roommates and working in the same ...

  3. 2017 CCPC final HDU - 6252 Subway Chasing (差分约束)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题目大意:有n个车站,两个人轮流从第一个车站出发,第一个人先出发x分钟,第二个人再出发.接下来给 ...

  4. HDU6252 Subway Chasing 2017 CCPC Final

    对于题目我们可以分两种情况. 在图中,两个红色箭头为两个人现在的位置,这是一种普遍的情况,那么既然两个箭头之间的距离为x. 我们设距离的前缀和为Si   ,一下的ABCD,都应该时SA  SB  SC ...

  5. HDU - 6252 Subway Chasing (差分约束)

    题目链接 题意:现在有两个人,其中一个人比另外一个人先走x分钟,然后两个人在途中不停的聊天,要是两个人报的点一样说明该人正好在那个点,要是不一样,则在两个点中间,现在要让你求两个站之间的长度(只要满足 ...

  6. hdu6525——Subway Chasing(差分约束系统)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题目大意: 第一个人比第二个人先走了x分钟,路上有n个车站,现在有m个询问,每次询问会得到第一个 ...

  7. L - Subway POJ - 2502

    L - Subway POJ - 2502 题意: 从 家出发步行与坐 subway 交替进行,问最小的时间花费,最终四舍五入答案为 整数 存图难 四舍五入: double b int a = b + ...

  8. PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!

    文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...

  9. AtCoder Regular Contest 061 E - Snuke‘s Subway Trip(建图 + dijkstra最短路 / 0/1bfs / 并查集)

    AtCoder Regular Contest 061 E - Snuke's Subway Trip problem 洛谷翻译 my idea 最近一直在做网络流,所以一读这题后,我就想到了最小费用 ...

最新文章

  1. 新闻网站的详情页面流程分析
  2. JavaScript数据结构与算法——集合
  3. matlab inline feval,matlab中关于函数句柄、feval函数以及inline函数的解析
  4. C#.NET通用权限管理在DB2数据库上运行的脚本参考 - 通过程序将数据导入到目标数据库中...
  5. python的socket编程接收浏览器上传的文件_使用python套接字编程将文件发送到浏览器...
  6. linux终端 介绍,全面介绍Linux终端命令(二)
  7. 给电脑插入安卓手机那么在eclipse的DDMS视图里的Devices没设备信息
  8. C++ 类对象和 指针的区别
  9. 计算机基础(三):srpintf()函数小结
  10. visual studio各版本下载
  11. svn之回滚到指定版本
  12. Unity3D 智能巡逻兵
  13. 新手自己搭建服务器步骤
  14. iOS解决“The ‘Pods-XXX‘ target has transitive dependencies that include statically linked binaries”报错
  15. 微信卡包新增入口跳转小程序
  16. 计算机应用基础客观答案,20春国家开放大学计算机应用基础客观题资料参考答案...
  17. TP全行业小程序运营管理系统源码+一键生成小程序
  18. 模拟高校的三个老师同时分发80份学习笔记
  19. c语言打印吉祥图案,中国古代吉祥图案的寓意(二)
  20. 【蓝桥杯】 最大比例

热门文章

  1. Java 线程实现两个方法同时运行
  2. static全局变量和普通全局变量区别?static局部变量和普通局部变量区别?static函数和普通函数区别
  3. 找出所有不是这两个数组共有的元素
  4. 美联储SR 11-7:模型风险管理指南(Guidance on Model Risk Management)-万字收藏
  5. 浙大版《C语言程序设计(第3版)》习题2-2 阶梯电价
  6. Foxmail升级后图片链接乱
  7. 计算机用户组改密码,怎么修改windows2012用户密码
  8. Glide作为图片缓存,清除缓存的合理方法
  9. 性格与中医养生8--阳虚体质
  10. keyup keydown @keydown.down.prevent