路由表输出(router)
题目描述
Y 同学所在的实验室中有 台路由器。每次实验开始前,实验员都会预先写好一张全局路由表。
每台路由器有唯一编号,编号范围为 。路由表中共有 条路由信息,按写入先后依次编号为 ,编号越小表示越早写入。
给定起点路由器 ,其中第 条路由信息记为 ,表示路由器 与 之间可以双向转发数据包。
现设起点路由器 在初始时已经收到数据包。定义集合 为所有最终能够收到数据包的路由器集合,其满足:
- 初始时,;
- 若存在某条路由信息 ,且 或 ,则可将另一端也加入 ;
- 不断重复上述过程,直到集合 不再发生变化。
你需要输出集合 中除 以外的所有路由器编号。
注意,输出顺序并不是搜索过程中第一次访问这些路由器的顺序,而是在整个集合 确定之后,再按照路由表的写入顺序统一决定。
具体地,按 依次扫描每条路由信息 :
- 若 ,且 ,并且 尚未输出,则输出 ;
- 若 ,且 ,并且 尚未输出,则输出 。
每个路由器至多输出一次。
输入格式
第一行输入一个整数 ,表示实验次数。
接下来共 组实验数据。每组数据格式如下:
- 第一行输入三个整数 ;
- 接下来 行,每行输入两个整数 ,表示第 条路由信息。
输出格式
对于每组实验,输出一行:
- 输出所有最终能够收到数据包的路由器(不含 ),按题目规定的顺序输出,相邻编号之间用一个空格分隔;
- 若不存在这样的路由器,则输出
None。
样例
样例输入 #1
2
6 6 2
2 4
1 2
4 5
3 6
5 6
2 3
4 1 3
1 2
样例输出 #1
4 1 5 6 3
None
样例解释
第 组
起点为 。
根据所有路由信息,可以确定最终能够收到数据包的路由器集合为:
也就是说,除起点 以外,其余路由器最终都能够收到数据包。
接下来按照路由表的写入顺序依次扫描:
| 路由表编号 | 路由信息 | 输出情况 |
|---|---|---|
| 输出 | ||
| 输出 | ||
| 输出 | ||
| 先输出 ,再输出 | ||
| 两端均已输出,不再输出 | ||
| 已输出,不再输出 |
因此答案为:
4 1 5 6 3
第 组
起点为 。
路由表中只有一条路由信息 ,与路由器 无关,因此最终只有路由器 自身能够收到数据包,不存在其他需要输出的路由器。
因此输出:
None
数据范围与约定
对于 的数据,保证:
- ;
- ;
- ;
- ;
- ;
- 所有实验的 之和不超过 ;
- 所有实验的 之和不超过 。
| 测试点编号 | 分值 | 特殊性质 | ||
|---|---|---|---|---|
| 10 | 特殊性质 A | |||
| 特殊性质 B | ||||
| 20 | 特殊性质 C | |||
| 无 | ||||
- 特殊性质 A:保证 。
- 特殊性质 B:保证图中不存在重边。
- 特殊性质 C:保证所有路由器最终都能够收到数据包。
京公网安备11010802045784号