分析模型
这道题还是很容易想到差分约束来做了
题目中给出了一系列的约束条件,指引着我们用差分约束来做。
先设置变量Xi的含义为到达源点的距离。
那么由于编号靠前的奶牛优先吃食物,因此的得到第一个约束条件
1)Xi+0 >= Xi;
根据题目意思很容易得到下面的不等式组
2)Xb - Xa <= L;
3) Xb - Xa >= L;
问题一:求出算法无解等价于求出题目中是否存在负环,由于问题二三都是问最大距离的因此我们按照最短路来建立图,
因此无解的情况就等价于图中存在负环。只是单纯的判断负环的话不需要建立虚拟原点求出绝对距离。只要做一遍SPFA判断负环即可。
问题二:求出1号奶牛和N号奶牛距离是否可以无限大,按照Xi的定义我们可以设定dist[x1] = 0,Xi就代表到达X1的距离,XN距离等于INF就等价于1 ~ N不存在路径。
问题三:在在做问题二的同时可以直接得到答案如果dist[N] != INF 那么dist[N] 就是答案。
由于我建边的时候是从小到大的,因此在做第二第三问的时候要从1当起点,而不能是n当起点,如果想让n当起点的话,必须建边的时候是从大到小的。