아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

숲 연결하기

시간 제한2초메모리 제한256 MB

요약
가중치가 있는 포레스트가 주어질 때, 각 정점을 최대 한 번만 사용하는 서로 다른 정점 쌍을 추가해 그래프를 연결되게 만들고, 쌍의 값 합의 최솟값을 구하거나 불가능하면 Impossible을 출력한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 유니온 파인드, 그래프
정답자
아직 제출이 없습니다

문제

NN개의 정점과 MM개의 간선으로 이루어진 숲이 주어진다. 정점은 00부터 N−1N-1까지 번호가 매겨져 있다. 간선은 (xi,yi)(x_i, y_i) 형태로 주어지며, 정점 xix_i와 yiy_i가 간선으로 연결되어 있다는 뜻이다.

각 정점 ii에는 값 aia_i가 부여되어 있다. 주어진 숲에 간선을 추가하여 하나의 연결된 그래프로 만들려고 한다. 간선을 추가하려면 서로 다른 두 정점 ii와 jj를 골라 ii와 jj 사이에 간선을 놓는다. 이 연산의 비용은 ai+aja_i + a_j달러이고, 연산 후에는 정점 ii와 jj를 다시 선택할 수 없다.

숲을 연결된 그래프로 만드는 데 필요한 최소 총비용을 구하라. 불가능하면 "Impossible"을 출력하라.

입력

입력은 다음 형식으로 주어진다.

NN MM

a0a_0 a1a_1 …\ldots aN−1a_{N-1}

x1x_1 y1y_1

…\ldots

xMx_M yMy_M

출력

숲을 연결된 그래프로 만드는 데 필요한 최소 총비용을 출력하라. 불가능하면 "Impossible"을 출력하라.

제한

1≤N≤100 0001 \le N \le 100\,000, 0≤M≤N−10 \le M \le N-1, 1≤ai≤1091 \le a_i \le 10^9, 0≤xi,yi≤N−10 \le x_i,y_i \le N-1. 주어진 그래프는 숲이다. 모든 입력값은 정수이다.

힌트

예제 1에서 정점 00과 55를 연결하면 그래프가 연결되고, 비용은 1+6=71 + 6 = 7이다.

예제 2에서는 그래프를 연결할 수 없다.

예제 3에서는 아무것도 하지 않아도 그래프가 연결되어 있다.

예제3

  1. 예제 1

    입력
    7 5
    1 2 3 4 5 6 7
    3 0
    4 0
    1 2
    1 3
    5 6
    
    예상 출력
    7
    
  2. 예제 2

    입력
    5 0
    3 1 4 1 5
    
    예상 출력
    Impossible
    
  3. 예제 3

    입력
    1 0
    5
    
    예상 출력
    0