qvixnh22   2년 전

정방향 그래프와 진입 차수 배열을 이용해 문제를 해결하고 있습니다.

이 그래프는 사이클과, 사이클에 붙어있는 subtree로 구성되어야 한다고 생각했습니다. 따라서 모든 노드를 순회하면서 사이클에 붙어있는 subtree의 노드 개수를 세는 문제와 동치라고 생각했습니다.

1. eli 함수는 트리를 유지하는 최대 크기의 트리 노드 수를 반환합니다.

2. 사이클에 포함되는 경우 절대 0이 아닌 값을 반환하지 않습니다.

1, 2를 종합해서 생각해보면, eli 함수는 모든 subtree를 제거하면서 모든 노드를 한 번씩 방문하는 함수이고, 제거한 subtree의 노드 개수를 모두 더하면 문제에서 원하는 답이 되리라고 생각합니다. 각 테스트케이스는 선형 시간 내에 작동할 것입니다.

어디서 이 프로그램이 WA를 받는지 잘 모르겠습니다.

slah007   2년 전

우선 테스트 케이스마다 visited[i]와 함께 choose[i]도 초기화해보세요.

qvixnh22   2년 전

해결했습니다. choose[i] 초기화는 아니었고 rev[i], 진입 차수 배열을 초기화 해 줘야 했습니다.

테스트케이스가 하나일 때만 반례를 체크하다 보니 이런 실수가 발생한 것 같네요.

댓글을 작성하려면 로그인해야 합니다.