ricky23   3년 전

논리구조는 이렇게 했습니다.

루트 노드는 1로 고정 했고,

DFS를 통해서 먼저 쭉쭉 들어갑니다

1) 만약 Leaf 노드이면 부모 노드를 Early Adopter로 만든다

2) 만약 자식 노드에 Early Adopter가 있으면 본인은 Early Adopter가 될 필요 없지만, 

    자식 중에 Early Adopter가 없으면 본인이 Early Adopter가 된다.

3) Root ( 1번 노드 ) 를 기준으로,

     Root 노드가 만약 Early Adopter 이면 상관 없지만,

     Early Adopter가 아닌데 자식노드들 중 Early Adopter가 아닌게 있다면 자신이 Early Adopter 가 된다.

ㅜㅜ 확인부탁드립니다

byunjaewoo   3년 전

풀이를 잘못 떠올리신 것 같습니다.

지금 반례는 못 찾겠지만, 분명 존재합니다.

정해는 트리 DP입니다.

DP1[i] = i의 서브트리에서 i를 얼리어답터로 했을 때 필요한 최소 개수

DP2[i] = i의 서브트리에서 i를 얼리어답터로 하지 않았을 때 필요한 최소 개수

이렇게 식을 정의하면 풀립니다.

+ 65번 줄, 70번 줄은 디버깅하면서 쓴 것 같은데 지워주셔야 합니다.

shw2495   3년 전

저는 비슷한 방법을 써서 풀었습니다. 아마 틀리신 이유가

2) 만약 자식 노드에 Early Adopter가 있으면 본인은 Early Adopter가 될 필요 없지만,

자식 중에 Early Adopter가 없으면 본인이 Early Adopter가 된다.

가 아닌

2) 만약 자식 노드가 하나라도 Early Adopter가 아니면 본인이 Early Adopter가 된다.

-> 모든 친구들이 early adopter이어야 받아드리기 때문입니다.

이 부분만 수정하면 통과하실 것 같습니다.

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