


def 							__lowercase       (			__lowerCAmelCase							:    Optional[int]       ):
							a__					=					[0] * len(__lowerCAmelCase       )
							a__					=					[]
							a__					=					[1] * len(__lowerCAmelCase       )

							for values in graph.values():
														for i in values:
																					indegree[i] += 1

							for i in range(len(__lowerCAmelCase       )       ):
														if indegree[i] == 0:
																					queue.append(__lowerCAmelCase       )

							while queue:
														a__					=					queue.pop(0       )
														for x in graph[vertex]:
																					indegree[x] -= 1

																					if long_dist[vertex] + 1 > long_dist[x]:
																												a__					=					long_dist[vertex] + 1

																					if indegree[x] == 0:
																												queue.append(__lowerCAmelCase       )

							print(max(__lowerCAmelCase       )       )


# Adjacency list of Graph
snake_case							:	Union[str, Any]					      =				{0: [2, 3, 4], 1: [2, 7], 2: [5], 3: [5, 7], 4: [7], 5: [6], 6: [7], 7: []}






longest_distance(graph)








from __future__ import annotations






def 							__lowercase       (			__lowerCAmelCase							:    list[int] ,   __lowerCAmelCase							:    int ,   __lowerCAmelCase							:    int ,   __lowerCAmelCase							:    int       ):
							if (direction == 1 and array[indexa] > array[indexa]) or (
							    direction == 0 and array[indexa] < array[indexa]
							):
														a__				, a__					=					array[indexa], array[indexa]






def 							__lowercase       (			__lowerCAmelCase							:    list[int] ,   __lowerCAmelCase							:    int ,   __lowerCAmelCase							:    int ,   __lowerCAmelCase							:    int       ):
							if length > 1:
														a__					=					int(length / 2       )
														for i in range(__lowerCAmelCase ,   low + middle       ):
																					comp_and_swap(__lowerCAmelCase ,   __lowerCAmelCase ,   i + middle ,   __lowerCAmelCase       )
														bitonic_merge(__lowerCAmelCase ,   __lowerCAmelCase ,   __lowerCAmelCase ,   __lowerCAmelCase       )
														bitonic_merge(__lowerCAmelCase ,   low + middle ,   __lowerCAmelCase ,   __lowerCAmelCase       )






def 							__lowercase       (			__lowerCAmelCase							:    list[int] ,   __lowerCAmelCase							:    int ,   __lowerCAmelCase							:    int ,   __lowerCAmelCase							:    int       ):
							if length > 1:
														a__					=					int(length / 2       )
														bitonic_sort(__lowerCAmelCase ,   __lowerCAmelCase ,   __lowerCAmelCase ,   1       )
														bitonic_sort(__lowerCAmelCase ,   low + middle ,   __lowerCAmelCase ,   0       )
														bitonic_merge(__lowerCAmelCase ,   __lowerCAmelCase ,   __lowerCAmelCase ,   __lowerCAmelCase       )


if __name__ == "__main__":
						snake_case							:	int					      =				input('''Enter numbers separated by a comma:\n''').strip()
						snake_case							:	Optional[int]					      =				[int(item.strip()) for item in user_input.split(''',''')]

						bitonic_sort(unsorted, 0, len(unsorted), 1)
						print('''\nSorted array in ascending order is: ''', end='''''')
						print(*unsorted, sep=''', ''')

						bitonic_merge(unsorted, 0, len(unsorted), 0)
						print('''Sorted array in descending order is: ''', end='''''')
						print(*unsorted, sep=''', ''')




