zkdlajt1   2년 전

반례를 찾아서 대입해봐도 답이 잘 나오는데 틀리는 원인을 모르겠습니다.

위상정렬의 알고리즘을 참고해서 풀었습니다. 다만, 일반적인 큐가 아닌 우선순위 큐에 indegree가 0인 정점을 넣어주고, 우선순위 큐에서 Delay가 최소인 정점을 꺼내면서 그 정점과 연결된 indegree를 줄여준 뒤 다시 indegree가 0이 된 정점을 우선순위 큐에 넣어주는 방식입니다. 물론 우선순위큐에 이전에 들어있던 정점의 Delay시간도 매 순간 줄여주었습니다. 

zkdlajt1   2년 전

PQ에 time값이 같은 게 있을 경우 문제가 생기는 거였습니다... 75번 줄의 time += minTime; 부분을 66번의 if문 안에 넣어주면 해결되었습니다. 58%에서 틀리신다면 시간이 가장 적게 남은 건물이 여러 개 있는 경우를 고려해보시면 좋을 것 같습니다.

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