[올라온 질문 중 발췌] 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년 전
문제 설명대로 코드를 짜보았습니다
제 생각에는 문제가 없어보였는데 틀렸다고 하더군요
어디를 놓치고 있는지 알려주시면 감사하겠습니다