本题是2013年NOIP普及组的压轴题
差分约束裸题。
计算当前线路中最小的级别(比较始发站和终点站)。
整条线路中所有大于这个级别的都必须停靠
所有未停靠的站点的级别一定小于这个级别
也就是说所有未停靠的即为级别低,记为A
所有停靠的站点级别一定比A的高,记作B
得到公式 B ≥ A + 1 B ≥ A + 1 B≥A+1
根据很明显是一道差分约束问题。
根据差分约束的概念,我们从所有的A向所有的B连一条权值为1的有向边。
然后根据差分约束的套路,我们还要设一个界限才能求出最大值。
因为所有车站级别都是正值,所以 A ≥ 1 A≥1 A≥1,也就是从0向所有的A中的点连一条权值为1 的有向边。我们常常用直接给dist
数组赋值为1代替。
但是由于实际数据范围较大
最坏情况下是有1000
趟火车,每趟有1000
个点,每趟上限有500
个点停站,则有(1000 - 500)
个点不停站,不停站的点都向停站的点连有向边,则总共有 500 ∗ 500 ∗ 1000 = 2.5 ∗ 1 0 8 500 * 500 * 1000 = 2.5 * 10^8 500∗500∗1000=2.5∗108,差分约束的spfa
有可能超时。
由于本题中的所有点的权值都是大于0,并且一定满足要求 = > => =>所有车站都等级森严 = > => =