# ABCDE import sys input = sys.stdin.readline n, m = map(int, input().split()) relations = [[] for _ in range(n)] answer = False for i in range(m): x, y = map(int, input().split()) relations[x].append(y) relations[y].append(x) def dfs(now, cnt): global answer if cnt == 4: answer = True return visited.append(now) for i in relations[now]: if i not in visited: dfs(i, cnt + 1) for i in range(n): visited = [] dfs(i,0) if answer: print(1) else: print(0)
- 성공한 코드와 비교했을 때, visited를 넣기만 하고 pop을 해주지 않아서 시간초과가 뜬 것 같다.
for i in relations[now]: if i not in visited: dfs(i, cnt + 1)
visited를 pop을 해 주지 않으면 최대 1999개의 원소가 든 리스트를 순회하며 원소가 들어있는지 비교해야 하기 때문에 시간초과가 발생한 것 같다.
# ABCDE import sys input = sys.stdin.readline n, m = map(int, input().split()) relations = [[] for _ in range(n)] answer = False for i in range(m): x, y = map(int, input().split()) relations[x].append(y) relations[y].append(x) def dfs(now, cnt): global answer if cnt == 4: answer = True return visited.append(now) for i in relations[now]: if i not in visited: dfs(i, cnt + 1) visited.pop() for i in range(n): visited = [] dfs(i,0) if answer: break if answer: print(1) else: print(0)