⚡️algorithm

[DFS] 백준 10265. MT - 틀림

남남이루 2022. 4. 28. 09:59

원리

텀프로젝트처럼 사이클 돌리고

그 길이랑, 그 길이 아닌거(포함 미포함)랑 구해서 최대값 구했는데 자꾸 사이클이 엄청나게 길어짐.. ㅇㅅㅇ


# 두 번째 줄에 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))