F. [USACO4.3] 街道赛跑Street Race

    Type: RemoteJudge 1000ms 125MiB

[USACO4.3] 街道赛跑Street Race

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

图一表示一次街道赛跑的跑道。可以看出有一些路口(用 00NN 的整数标号),和连接这些路口的箭头。路口 00 是跑道的起点,路口 NN 是跑道的终点。箭头表示单行道。运动员们可以顺着街道从一个路口移动到另一个路口(只能按照箭头所指的方向)。当运动员处于路口位置时,他可以选择任意一条由这个路口引出的街道。

图一:有 1010 个路口的街道

一个良好的跑道具有如下几个特点:

  1. 每一个路口都可以由起点到达。
  2. 从任意一个路口都可以到达终点。
  3. 终点不通往任何路口。

运动员不必经过所有的路口来完成比赛。有些路口却是选择任意一条路线都必须到达的(称为“不可避免”的)。在上面的例子中,这些路口是 00336699。对于给出的良好的跑道,你的程序要确定“不可避免”的路口的集合,不包括起点和终点。

假设比赛要分两天进行。为了达到这个目的,原来的跑道必须分为两个跑道,每天使用一个跑道。第一天,起点为路口 00,终点为一个“中间路口”;第二天,起点是那个中间路口,而终点为路口 NN。对于给出的良好的跑道,你的程序要确定“中间路口”的集合。如果良好的跑道 CC 可以被路口 SS 分成两部分,这两部分都是良好的,并且 SS 不同于起点也不同于终点,同时被分割的两个部分满足下列条件:(1)它们之间没有共同的街道(2)SS 为它们唯一的公共点,并且 SS 作为其中一个的终点和另外一个的起点。那么我们称 SS 为“中间路口 ”。在例子中只有路口 33 是中间路口。

输入格式

输入文件包括一个良好的跑道,最多有 5050 个路口,100100 条单行道。

共有 N+2N+2 行,前面 N+1N+1 行中第 ii 行表示以编号为 i1i-1 的路口作为起点的街道,每个数字表示一个终点。行末用 -2 作为结束。最后一行只有一个数字 -1

输出格式

第一行:跑道中“不可避免的路口”的数量,接着是这些路口的序号,序号按照升序排列。

第二行:跑道中“中间路口”的数量,接着是这些路口的序号,序号按照升序排列。

1 2 -2
3 -2
3 -2
5 4 -2
6 4 -2
6 -2
7 8 -2
9 -2
5 9 -2
-2
-1
2 3 6
1 3

提示

题目翻译来自NOCOW。

USACO Training Section 4.3

提高作业2

Not Claimed
Status
Done
Problem
13
Open Since
2026-2-5 0:00
Deadline
2026-2-27 0:30
Extension
24 hour(s)