题目描述
给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节点,如 [0, 1] 表示从 0 到 1 的路径。
每个节点用正整数表示。
求这个数据的首节点与尾节点,题目给的用例会是一个首节点,但可能存在多个尾节点。同时图中可能含有环。如果图中含有环,返回 [-1]。
说明:入度为0是首节点,出度为0是尾节点。
输入描述
第一行为后续输入的键值对数量N(N ≥ 0)
第二行为2N个数字。每两个为一个起点,一个终点,如:
输出描述
输出一行头节点和尾节点。如果有多个尾节点,按从大到小的顺序输出。
备注
如果图有环,输出为 -1
所有输入均合法,不会出现不配对的数据
用例
输入 4
0 1 0 2 1 2 2 3
输出 0 3
说明 无
输入 2
0 1 0 2
输出 0 1 2
说明 无
解题思路:
- 首先,我们需要统计每个节点的入度和出度。
- 然后,找到入度为0的节点作为首节点,出度为0的节点作为尾节点。
- 如果图中存在环,即存在一个节点的入度大于1,那么返回[-1]。
- 最后,按照题目要求输出首节点和尾节点。