DFS 진행하면 됨def solution(info, edges):
answer = []
visited = [False] * len(info)
def dfs(sheep, wolf):
if sheep > wolf:
answer.append(sheep)
else:
return
for p, c in edges:
# 부모 노드 방문한 적 있으면서 자식 노드 처음 방문
if visited[p] and not visited[c]:
visited[c] = True
if info[c] == 0:
dfs(sheep + 1, wolf)
else:
dfs(sheep, wolf + 1)
visited[c] = False # 백트래킹
visited[0] = True
dfs(1, 0)
return max(answer)
O(2^N)