#air. 2026提高组模拟赛12-T2 程老师的冗余航线
2026提高组模拟赛12-T2 程老师的冗余航线
时间限制:1000ms 内存限制:512MB
题目描述
一家支线航空公司准备精简航线网络,程老师被请去做评估。网络里有 个通航城市,编号 到 ,城市之间开着 条直飞航线。航线全是单向的:一条从 到 的航线只提供 出发、 到达的航班,想反向飞得看有没有另一条航线。这张网络还有个特点——早年规划时刻意避开了绕圈,从任何一个城市出发,沿航线一路飞下去,永远不可能飞回出发的城市,所以旅客不必担心转机转着转着回到原地。
评估的标准只有一条。对某条从 到 的直飞航线,假设把它单独停飞、其余航线全部保留,如果旅客仍然能从 飞到 ——中途可以在别的城市转机,转几次都行——那么这条直飞航线就是"冗余"的,可以砍掉;反之,停飞之后 再也到不了 ,这条航线就是网络的命脉,必须保留。注意冗余的判定不要求"同样快",只要求"还能到",转机十次八次也算能到。
判定里几个口径需要说死。其一,一次只评估一条航线:停飞某条时其余航线全部照常,不存在"两条一起砍还能不能到"的问题。其二,转机就是到达某城后换乘从该城出发的另一条航线,不另收费用,也不考虑时刻衔接,只要航线在,旅客就能转。其三,"还能到"的起点和终点必须是被评估航线原来的起点和终点,从别的城市绕过来不算数。其四,网络里同一对城市之间至多一条单向直飞航线,但 到 与 到 是两条各自独立的航线,评估时各算各的。
这里有个容易看走眼的地方:冗余不是看两城之间有没有"另一条直飞"。网络里任意两城之间本来就至多一条单向直飞航线,冗余与否取决于中转。有的航线看着孤零零的,其实旅客绕两站照样能到;也有的航线一头挑着唯一的通道,砍了就彻底断了。评估报告要逐条核对,不能凭印象。
这家公司前两年砍过一轮航线,当时全凭几位老调度对着挂图比划,结果误砍了两条命脉线,三个城市当即脱网,只好花钱复航,成了行业里的笑话。这回董事会立下规矩:评估必须给出书面依据,每条航线的结论都要能复核。第一步先把总数摸清楚——程老师需要你先给一个总数:这张网络里冗余航线一共有多少条。董事会上先拿这个数讨论砍线的空间,具体砍哪些下一步再议。
输入格式
第一行两个整数 ,表示城市数量和航线数量。
接下来 行,每行两个整数 ,表示一条从 到 的单向直飞航线。
输出格式
输出一行一个整数,表示冗余航线的数量。
数据范围
| 测试点编号 | 特殊性质 | ||
|---|---|---|---|
| 1 ~ 4 | 无 | ||
| 5 ~ 8 | |||
| 9 ~ 12 | A | ||
| 13 ~ 20 | 无 | ||
- 特殊性质 A:每条航线两端的编号之差不超过 ,即 。
- 对于全部数据,,,,;同一对城市之间至多一条单向航线;保证从任何城市出发沿航线飞行都不可能回到出发城市。
样例
样例 1
输入:
3 3
1 2
2 3
1 3
输出:
1
解释:逐条核对。停飞 :从 出发只剩 ,到不了 ,不冗余。停飞 :从 出发别无出路,不冗余。停飞 :可以走 中转一次到达,冗余。合计 条。
样例 2
输入:
4 6
1 2
2 3
1 3
3 4
2 4
1 4
输出:
3
解释:冗余的是 (走 )、(走 )、(走 ,转两次机也算能到)。其余三条停飞后对应起点都到不了终点,合计 条。
样例 3
输入:
4 3
1 2
2 3
3 4
输出:
0
解释:一条纯链,每条航线都是唯一的通道,停飞任何一条都当场断路,冗余航线为 条。
- ID
- 680
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者