dmzld   3년 전

순수하게 혼자 작성한 코드인데요

도시 간 연결을 이차원 배열에 넣고

각각의 도시들을 순서대로 연결된 모든 도시들의 head 도시(유니온에서 가장 작은 도시)들과 비교하며

작은 도시 값으로 conn[도시] 값을 갱신합니다.

즉 1,2,4가 연결되있다면 conn[1,2,4] = 1인거죠

그런데 만약에 N = 4이고 (1,4) (2,4) (4,1) (4,2) 가 연결되었다고 주어질 때 ( conn[]의 초기 값은 0 )

conn을 갱신하는 밑에 표시해둔 알고리즘 상으로 결과가 conn[1 ~ 4] = { 0, 0, 3, 0 } 이라는 말도 안되는 값이 되어버리는데

왜 맞을까요??

dmzld   3년 전

제 생각엔 이렇게 고치는게 맞는 것 같은데

결과는 오히려 틀리다고 나오네요...

sait2000   3년 전

왜 그렇냐면 둘 다 틀렸는데 데이터가 너무 약해서 그렇습니다. 연결을 따라서 가장 위에 있는 걸 찾았으면 가장 위에 있는 것끼리 이어야 합니다. 중간을 이으면 안 됩니다.

dmzld   3년 전

감사합니다

도착 가능 판별이랑 head 도시 갱신 부분 수정해서 납득 가능하게 맞았네요

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