원리
텀프로젝트처럼 사이클 돌리고
그 길이랑, 그 길이 아닌거(포함 미포함)랑 구해서 최대값 구했는데 자꾸 사이클이 엄청나게 길어짐.. ㅇㅅㅇ
# 두 번째 줄에 n개의 정수 xi (i = 1, 2, ... , n, 1 ≤ xi ≤ n) 가 순서대로 주어진다. xi는 xi번째 사람이 버스에 타지 않는다면 i번째 사람 역시 버스에 타지 않음을 의미한다.
# 얘는 꼭 타야돼
import sys
sys.stdin = open('in2.txt')
sys.setrecursionlimit(10**5)
input = sys.stdin.readline
n, cap = map(int, input().split())
graph =[0] + list(map(int, input().split()))
check = [False]*(n+1)
traced = []
res = []
print(n, cap, graph, check)
def DFS(id):
global res
check[id] = True
nid = graph[id]
traced.append(id)
if not check[nid]:
DFS(nid)
else:
if nid in traced:
res += traced[traced.index(nid):]
else:
for i in range(1, n+1):
lst = []
if not check[i]:
traced = []
DFS(i)
check = [False] * (n+1)
cnt = n - len(res)
print(res)
if 0 <= cnt <= cap:
lst.append(cnt)
else:
lst.append(len(res))
print(lst)
print(max(lst))
'⚡️algorithm' 카테고리의 다른 글
[BFS 파이썬] 백준 7576. 토마토 (0) | 2022.04.29 |
---|---|
[DFS, 파이썬] 백준 4963. 섬의 개수 (0) | 2022.04.29 |
[DFS, 파이썬] 백준 2468. 안전영역 (0) | 2022.04.27 |
[DFS, 파이썬] 백준 11403. 경로찾기 (0) | 2022.04.27 |
[DFS] 백준 2583. 영역구하기 (0) | 2022.04.26 |