一条单向的铁路线上依次有编號为 1,2,…,n的 n个火车站。每个火车站都有一个级别最低为 1 级。现有若干趟车次在这条线路上行驶每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠(注意:起始站和终点站自然也算作事先已知需要停靠的站點)
例如,下表是5趟车次的运行情况其中,前 4 趟车次均满足要求而第 5 趟车次由于停靠了 3 号火车站(2 级)却未停靠途经的 6 号火车站(亦為 2 级)而不满足要求。
现有 m 趟车次的运行情况(全部满足要求)试推算这 n 个火车站至少分为几个不同的级别。
第一行包含 2 个正整数 n, m 用一個空格隔开
第 i+1 行(1≤i≤m)中,首先是一个正整数 s_i(2 ≤ s_i ≤ n) 表示第 i 趟车次有 s_i 个停靠站;接下来有s_i 个正整数表示所有停靠站的编号,从小到大排列每两个数之间用一个空格隔开。输入保证所有的车次都满足要求
一个正整数,即 n 个火车站最少划分的级别数
这道题很难想到用拓扑,该开始想的是能不能用线段树维护一下区间最大值然后跟左右要
停的车站等级进行比较,然后修改最后发现有错误;
正解应该就是對于每一趟车次,记录下它的停靠站点;然后枚举di[1]–di[s]中的所有非停靠站点每个非停靠站点都对该车次的所有停靠站点进行建边。最后然後跑一遍拓扑找出最大路径;