kdr06006   3년 전

문제 설명대로 코드를 짜보았습니다

제 생각에는 문제가 없어보였는데 틀렸다고 하더군요

어디를 놓치고 있는지 알려주시면 감사하겠습니다

dldyddlwl   3년 전

[올라온 질문 중 발췌] dotorya님의 질문 중에서

"보통 이런 문제에서 간선 정보 줄때 같은 간선은 여러번 입력으로 들어오지 않는다거나 자기 자신으로의 간선(ex. 1 1등)은 존재하지 않는다거나 하는 등의 조건이 (명시적이지 않더라도) 있는 경우가 대부분이라 그냥 가정하고 짰는데 이런 종류의 데이터가 모두 있더군요...

이런 데이터가 들어올 수 있다는 것 정도는 명시해 주었으면 합니다.. ㅠ 문제 자체와는 별로 상관도 없는 내용인데 이것때문에 꽤 고생해서요.." 

============================================================================================================================

만약에, 같은 간선이 여러번 입력된다면, 예를 들어, 1 2 1 2 1 2가 3번 입력된다면,

adj[1]에 3번의 중복된 push_back이 실행됩니다. 그렇게 되면 adj[1]은 3개의 원소를 가지고, 밑의 for loop에 들어가게 됩니다.

아직 2번은 방문하지 않았으므로, s값이 불필요하게 증가하고, V에 같은 값이 중복으로 들어가게 됩니다. 그러면, 잘못된 순서로 가게 될 수도 있습니다.

( 1->2, 1->2, 1->2, 1->3,  1->4  의 경우, s=5, V = {2,2,2,3,4},  이므로 홀수개가 됩니다. 그러면, V[5-1/2 = 2] = 2를 먼저 방문합니다. 실제로는

V={2,3,4}이므로, 3을 먼저 방문해야합니다. 

kdr06006   3년 전

헉 세상에 그런 경우가 있었군요

감사합니다!

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