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

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

도로

시간 제한6초메모리 제한1024 MB

요약
도시 s에서 t로 가는 경로 중, 제거해도 나머지 도로로 모든 도시가 연결되는 경로의 최소 길이를 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, DFS
정답자
아직 제출이 없습니다

문제

나라에 nn개의 도시가 있고, 이 도시들은 양방향 도로 mm개로 연결되어 있다. 도시는 1,2,…,n1, 2, \dots, n, 도로는 1,2,…,m1, 2, \dots, m으로 번호가 매겨져 있다. ii번 도로는 도시 uiu_i와 도시 viv_i를 잇고, 길이는 wiw_i미터이다. 어느 도시에서 출발하든 도로를 따라 다른 모든 도시에 갈 수 있다.

도로는 특별한 방식으로 지어져 있다. 정확히 말하면, ll개의 도로를 지나는 단순 사이클(시작점을 제외하고 같은 도시를 두 번 방문하지 않는 사이클)은 c1→c2→⋯→cl−1→clc_1 \to c_2 \to \dots \to c_{l-1} \to c_l로 나타낼 수 있다. 이때 모든 1≤i<l1 \le i < l에 대해 도시 cic_i와 ci+1c_{i+1}은 도로로 직접 연결되어 있고, 도시 c1c_1과 clc_l도 도로로 직접 연결되어 있으며, 모든 1≤i<j≤l1 \le i < j \le l에 대해 ci≠cjc_i \ne c_j이다. l>3l > 3이면 도로는 다음 조건도 만족해야 한다. 사이클 위에 서로 인접하지 않은 두 도시가 있고, 두 도시가 도로로 직접 연결되어 있다. 즉 1≤u<v≤l1 \le u < v \le l, v−u≥2v-u \ge 2이며, uu와 vv가 동시에 11과 ll이 아니고, 도시 cuc_u와 cvc_v가 도로로 직접 연결되는 u,vu, v가 존재한다.

나라가 도시 ss와 도시 tt 사이의 경로를 보수하려고 한다. 보수하는 동안 그 경로는 막히므로, 남은 도로만으로 어느 도시에서 출발하든 다른 모든 도시에 도달할 수 있어야 한다. 가능한 보수 경로 중 총 길이가 가장 짧은 것을 찾아라.

입력

첫째 줄에 도시의 수 nn과 도로의 수 mm이 주어진다. 이어지는 mm개의 줄에는 세 정수 uiu_i, viv_i, wiw_i가 각각 주어지며, 이는 ii번 도로의 양 끝 도시와 길이이다. 각 도로는 서로 다른 두 도시를 잇는다. 마지막 줄에는 보수할 경로의 양 끝점 ss와 tt가 주어진다.

출력

조건을 만족하는 보수 경로의 최소 길이를 정수 하나로 출력한다. 가능한 경로가 없으면 −1-1을 출력한다.

제한

모든 테스트 케이스에 대해 2≤n≤5×1052 \le n \le 5 \times 10^5, 2≤m≤1062 \le m \le 10^6, s≠ts \ne t, 1≤ui,vi≤n1 \le u_i, v_i \le n, ui≠viu_i \ne v_i, 1≤wi≤1091 \le w_i \le 10^9이다. 두 도로의 양 끝점이 완전히 같은 경우는 없다. 도로는 문제에서 설명한 조건을 만족하도록 주어진다.

예제2

  1. 예제 1

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

    입력
    2 1
    1 2 1
    1 2
    
    예상 출력
    -1