HDU6254 Subway Chasing
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相关推荐
- J - Subway Chasing ( 差分约束 )
J - Subway Chasing ( 差分约束 ) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题意:有1~n号地铁站( Alice和B ...
- 17 哈尔滨CCPC final J - Subway Chasing 差分约束
题目:https://vjudge.net/problem/HDU-6252 Mr. Panda and God Sheep are roommates and working in the same ...
- 2017 CCPC final HDU - 6252 Subway Chasing (差分约束)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题目大意:有n个车站,两个人轮流从第一个车站出发,第一个人先出发x分钟,第二个人再出发.接下来给 ...
- HDU6252 Subway Chasing 2017 CCPC Final
对于题目我们可以分两种情况. 在图中,两个红色箭头为两个人现在的位置,这是一种普遍的情况,那么既然两个箭头之间的距离为x. 我们设距离的前缀和为Si ,一下的ABCD,都应该时SA SB SC ...
- HDU - 6252 Subway Chasing (差分约束)
题目链接 题意:现在有两个人,其中一个人比另外一个人先走x分钟,然后两个人在途中不停的聊天,要是两个人报的点一样说明该人正好在那个点,要是不一样,则在两个点中间,现在要让你求两个站之间的长度(只要满足 ...
- hdu6525——Subway Chasing(差分约束系统)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题目大意: 第一个人比第二个人先走了x分钟,路上有n个车站,现在有m个询问,每次询问会得到第一个 ...
- L - Subway POJ - 2502
L - Subway POJ - 2502 题意: 从 家出发步行与坐 subway 交替进行,问最小的时间花费,最终四舍五入答案为 整数 存图难 四舍五入: double b int a = b + ...
- PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!
文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...
- AtCoder Regular Contest 061 E - Snuke‘s Subway Trip(建图 + dijkstra最短路 / 0/1bfs / 并查集)
AtCoder Regular Contest 061 E - Snuke's Subway Trip problem 洛谷翻译 my idea 最近一直在做网络流,所以一读这题后,我就想到了最小费用 ...
最新文章
- Bootstrap笔记
- 初识C语言---(2)
- 中文 Markdown 编写格式规范的命令行工具 lint-md
- 根据输入的数字显示日期(新手)
- 湖北大学校长计算机考研复试分数线,湖北大学考研复试分数线
- python数据处理实例-Python数据处理numpy.median的实例讲解
- linux 更改 引导分区,Linux系统引导过程及引导修复
- 如何帮助金融客户“用好云”?
- jenkins pipeline之如何串联多个Job
- c语言case语句块,JavaScript使用Switch语句来选择将要执行的代码块
- gcc编译ceres-solver报错‘is_trivially_default_constructible’ is not a member of ‘std’
- SQL Sever select定制查询
- MySQL 定义条件与处理程序 的详细讲解
- 奇点云数据中台技术汇(四)| DataSimba系列之流式计算
- 脑机接口、开源和民主化增强意识的未来
- 为了牙齿美白,该不该给百天的小宝宝补充氟化物?
- 【收藏】亲测奥维互动地图如何导入2023谷歌地图
- 京东base.css
- 认知电子战 (1.1):传统电子战
- SSL 域名证书 安装指引
热门文章
- 机器学习-mini batch的一些tips
- XSS--编码绕过,qcms,鲶鱼cms
- ASP.NET ValidationSummary 控件
- tkinter库绘图实例13:手绘画板效果
- oled屏HBM功能开启关闭
- python如何爬取图片_百度图片爬虫-python版-如何爬取百度图片?
- HTML DOM:replaceChild()和cloneNode()
- 前端,移动开发者,UI须懂: 不同设备的之间的尺寸
- Google的大规模集群管理系统Borg
- RBF网络插值、MNIST识别简例