题目描述
现实版:
计算机系的小雷同学是个背包客,他打算暑假有时间去环游中国。
他的想法得到了家里的支持,爸爸决定赞助他一张机票送他前往他的第一个目的地。
小雷并不是一个贪小便宜的人,所以他自然不会买最贵的机票前往乌鲁木齐(躺枪)。
他也不是一个计划狂,随性的他希望游完第一个城市之后再决定下一步去哪里,而他又希望有一个美好的开始,不至于像去了三亚的天涯海角之后无路可走,所以他打算将他的第一个目的地定为有航线能通往最多城市的国内机场所在地。
小雷的叔叔告诉他,如果这样的话那么他只能选择飞往北京了。但是小雷并不相信这个结论,于是他搜集了国内各个城市之间的航线图,自己尝试用专业知识对这个问题进行建模。
他把每一个城市定义为图内的一个顶点,城市之间的航线采用有向边来表示。例如,城市A有飞往城市B的航班,那么在图中就存在一条从A指向B的有向边。
建模完成之后问题来了,如何利用小雷的模型,计算出哪一个城市是他的第一个最佳旅行目的地呢?
抽象版:
给定一个有向图G,一个点 v 的影响力定义为图G中可以从 v 可达的顶点的个数(不包括自身)。
问题:找出图G中影响力最大的顶点。
注:结果不一定唯一。
输入
图G,以邻接表的形式。
点的标号从0到n-1,总共n个点,于是有n行输入。
第 i 行的输入为与编号 i-1 这个点相邻的点们的标号,以空格隔开,行尾无空格。如样例输入中第2行为“2 3”,表示点1到点2有一条边,点1到点3有一条边。
注:本次输入处理不会告诉你总共有多少个点,每一行也不会告诉你该点有多少个邻居,请发挥你的聪明才智,运用种种编程技巧处理这样的输入。
输出
第一行:图G中影响力最大的点的影响力。
第二行:图G中影响力最大的点的标号。如果结果不唯一,依照标号从小到大输出,中间以空格隔开。
样例输入
1
2 3
0
4
5
3
样例输出
5
0 1 2
提示
一个点的影响力,不包括自身。
解题思路
有向图G,一个点 v 的影