import sys
sys.setrecursionlimit(10 ** 6)
n,m = map(int, sys.stdin.readline().rstrip().split())
# 사람의 수 / 친구 관계의 수
node=[[] for _ in range(n)]
visited=[0 for _ in range(n)]
possible = False
def dfs(num, cnt) :
global possible
if possible : return
if(cnt>=5) : possible = True; return
for relation in node[num] :
if visited[relation]==0:
visited[relation]=1
cnt+=1
dfs(relation, cnt)
visited[relation]=0
cnt-=1
for i in range(m) :
a,b = map(int, sys.stdin.readline().rstrip().split())
node[a].append(b) ; node[b].append(a)
for j in range(n) :
visited[j]=1
dfs(j, 1)
visited[j]=0 # 꼭 다시 이렇게 원상복귀 시켜주기
if possible : print(1)
else : print(0)
import sys
sys.setrecursionlimit(10 ** 6)
n,m = map(int, sys.stdin.readline().rstrip().split())
# 사람의 수 / 친구 관계의 수
node=[[] for _ in range(n)]
visited=[0 for _ in range(n)]
maxcnt = -99999
def dfs(num, cnt) :
global maxcnt
for relation in node[num] :
if visited[relation]==0:
visited[relation]=1
cnt+=1
dfs(relation, cnt)
visited[relation]=0
cnt-=1
else :
maxcnt= max(cnt, maxcnt)
return
for i in range(m) :
a,b = map(int, sys.stdin.readline().rstrip().split())
node[a].append(b) ; node[b].append(a)
for j in range(n) :
if visited[j]==0:
visited[j]=1
dfs(j, 1)
if(maxcnt>=5) : possible = True; break
if possible : print(1)
else : print(0)
- DEF 안에서는 그렇게 잘 처리를 해찌
- 그렇지만 DEF 바깥에서 dfs 호출할 때 방문했던 것을 해지해주지 않았지
- visited=0 으로 되돌려놔야 하지
import sys
sys.setrecursionlimit(10 ** 6)
n,m = map(int, sys.stdin.readline().rstrip().split())
# 사람의 수 / 친구 관계의 수
node=[[] for _ in range(n)]
visited=[0 for _ in range(n)]
possible = False
def dfs(num, cnt) :
global possible
if possible : return
if(cnt>=5) : possible = True; return
for relation in node[num] :
if visited[relation]==0:
visited[relation]=1
cnt+=1
dfs(relation, cnt)
visited[relation]=0
cnt-=1
for i in range(m) :
a,b = map(int, sys.stdin.readline().rstrip().split())
node[a].append(b) ; node[b].append(a)
for j in range(n) :
visited[j]=1 # 바로 이 부분을 다시 원상복구 해놓지 않아찌
dfs(j, 1)
if possible : print(1)
else : print(0)
sys.setrecursionlimit(10**6)
써야한다. 파이썬은 재귀가 최대 1000이기 때문