一. 题目
给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节点,如[0, 1]表示从0到1的路径。每个节点用正整数表示。求这个数据的首节点与尾节点,题目给的用例会是一个首节点,但可能存在多个尾节点。同时,图中可能含有环。如果图中含有环,返回[-1]。
说明:入度为0是首节点,出度为0是尾节点。
输入描述:
第一行为后续输入的键值对数量N>=0,第二行为2N个数字。每两个为一个起点,一个终点。如:
输出描述:
输出一行头节点和尾节点。如果有多个尾节点,按从大到小的顺序输出。
补充说明:
如果图有环,输出为-1.
所有输入均合法,不会出现不配对的数据
示例1
输入:
4
0 1 0 2 1 2 2 3
输出:
0 3
说明:
示例2
输入:
2
0 1 0 2
输出:
0 1 2
二.解题思路
当解决这个问题时,我们需要考虑有向图的性质。首先,我们要建立一个图的表示,可以使用一个字典来表示邻接表。然后,我们需要计算每个节点的入度和出度。
-
构建图和计算入度、出度: 遍历输入的键值对,将起点和终点添加到图中,同时计算每个节点的入度和出度。