아니 랭커들 어케 4분만에 푼거지, 다른 사람들도 보통 15분 이내로 푼 것 같은데 난 1시간 걸렸음.
나는 dp[i] = i에서 시작해서 i의 서브트리에 속한 모든 task를 순회하고 돌아오는 최소 거리. 로 정의해서
x,y에서 각각 lca로 움직인 후에 lca에서 외부에 task가 남아있으면 계속 위로 올라가는 방식으로 풀었음.
코드도 2000바이트 가까이 나왔는데 아무리 봐도 정해가 아닌 것 같음.
더 쉬운 풀이가 있는거임? 아님 내가 느린건가
난 X를 루트로 고정하고 DFS 돌려서 풀었음
child의 서브트리에 Y가 있으면 거기서 +1만, Y는 없는데 타겟이 있으면 +2, 아무것도 없으면 스킵
아 나 ㅄ이네 x를 루트로 하면 개쉬워지는구나 하..
Y를 루트로 하면 각 노드의 parent만 기록해두면 돼서 더 쉬움