Problem 4039 -- 路由追踪

4039: 路由追踪

"
Time Limit $1$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $4$ 正确数量 $2$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签
最近,研究中心迎来了一次扩建。扩建完成后,Higuchi发现网络的延迟似乎上升了。于是她找来 了Yuki帮忙解决这个问题。 为了分析网络路由情况,路由追踪是一种常用的手段。作为内部网络,研究中心的计算机网络采用的是 静态路由,因此不需要真的发送数据包,只要有网络的拓扑结构和各主机的路由表就能完成路由追踪。 现在,对于给定的网络结构和路由表、源IP地址和目的IP地址,请你完成路由追踪,找出路由中所有主 机的IP。 下面将介绍本题中使用的简化网络模型。对于与现实中不同的部分,请以这里的描述为准。 计算机网络在逻辑上可以看作一张无向图,其中结点对应网络中的主机(或者交换机、路由器),边可 以看作网线。数据包可以从一台主机被转发到相邻的另一台主机。通过不断地转发,网络中任意两台主 机都可以互相通信。 网络中每台主机有唯一的IP地址(IP),用来在网络上标志这台主机。IP地址是一个32位无符号整 数,例如十六进制整数c0 a8 03 ae是一个有效的IP地址。这种表示方法不利于人类理解,因此规 定IP地址也可以被表示为4组十进制整数,其中每一组整数在[0, 255]范围内,对应完整地址的8个二进制 位。例如,前面提到的地址c0 a8 03 ae在这种表示下可以被写成192.168.3.174。 为 了 表 示 一 类 相 似 的IP, 可 以 使 用CIDR。 一 个CIDR形 如192.168.0.0/16, 后 面 的/16称 为 前 缀长度,表示只有前16个二进制位是有效的。这个CIDR包含所有前16位等于192.168,后16位 从0.0到255.255任意取值的65536个IP。注意前缀长度未必是8的倍数,例如28.0.0.0/6是一个有效 的CIDR,它包含所有前6个二进制位是000111的2 26个IP。如果一个IP被一个CIDR包含,称这个IP匹配 这个CIDR。例如,192.168.3.174匹配192.168.0.0/16,但不匹配28.0.0.0/6。 数据包有两个关键的属性,源IP地址和目的IP地址。当主机A想要向主机B传递信息,它创建一个数 据包,将源地址属性设置为自己的IP,目的地址设置为主机B的IP。然后,主机A选择一台有网线直接 相连的主机C,将数据包发送给主机C。主机C会将数据包转发给相邻的主机D,然后收到数据包的主 机D再次转发,直到主机B收到数据包。 在数据包的转发过程中,一个关键的问题就是,如果有多台主机相邻,如何选择转发的目标。事实上, 每台主机都维护有一个路由表。表中的每一项包含两个字段,目的CIDR和转发IP。当主机收到一个数 据包,它按如下顺序操作。 1. 检查数据包目的IP是否为本机。如是,接受数据包并不再转发。 2. 从路由表中选择一条记录,数据包的目的IP必须匹配这条记录的目的CIDR。 3. 将数据包原样转发给上一步中选中记录的转发IP对应的那台主机。 有 时 , 一 个IP可 以 匹 配 多 个CIDR, 也 就 导 致 一 个 数 据 包 可 以 匹 配 路 由 表 中 多 条 记 录 。 例 如192.168.3.174既匹配192.168.0.0/16,也匹配0.0.0.0/0。此时规定主机将选择前缀长度最大的 那条记录。 按照上面的规则,一个数据包将从源主机开始,经过若干主机的转发,最终被目的主机接受。这个过程 中数据包经过的主机(包括源和目的)称为数据包的路由。路由追踪就是要找出一个数据包路由中的所 有主机的IP。 
到达目的主机。 接下来1行,包含一个整数n(1 ≤ n ≤ 105 ),表示网络中的主机数。 接下来依次描述每台主机。其中第1行包含一个IP和一个非负整数ki( Pki ≤ 106 ),依次表示主机i的IP和 路由表项数。接下来ki行,每行描述主机i的路由表中的一项,包括目的CIDR和转发IP,用空格隔开。 保证每台主机的IP唯一,所有的CIDR和IP都是合法的,所有转发IP都与主机i直接相连。
输出的第一行包含一个整数p,表示路由中的主机数。 接下来p行,按顺序输出路由中的主机IP,包括源主机和目的主机。 
170.23.8.7 1.91.98.10
4
170.23.8.7 1
0.0.0.0/0 170.23.5.0
170.23.5.0 2
170.23.8.7/32 170.23.8.7
1.0.0.0/8 1.14.51.4
1.91.98.10 1
0.0.0.0/0 1.14.51.4
1.14.51.4 2
1.91.98.10/32 1.91.98.10
170.23.0.0/16 170.23.5.0
4
170.23.8.7
170.23.5.0
1.14.51.4
1.91.98.10

对于前30%的数据,n ≤ 1000。 对于前50%的数据,ki ≤ 1。


没有在主机i的路由表中出现的主机均不与主机i直接相连。换句话说,网络结构中所有的边都由路由表 的目的IP给出。 在本题中,IP地址仅作为主机的唯一标识符。不需要特殊处理127.0.0.1或者255.255.255.255等保留 地址。

推荐代码 查看4039 所有题解 上传题解视频得图灵币

本题记录 用 户(点击查看用户) 运行号(点击购买题解) 时 间
算法最快[$3 $ms] QWQ 1096840 2024-04-21 16:55:55
内存最少[$2196 $KB] QWQ 1096840 2024-04-21 16:55:55
第一AC AOJ大管家 1091770 2024-04-07 10:53:34
第一挑战 AOJ大管家 960485 2023-04-29 22:40:10

赛题来源/所属竞赛 N/A

竞赛编号 竞赛名称 竞赛时间 访问比赛