포럼
문제 USACO0338

단절

설명

농부 존은 자신의 농장이 잘 연결되어 있다는 것에 자부심을 가지고 있다. 농장은 \(N\)개의 목초지 (\(2 \leq N \leq 50,000\))로 이루어져 있으며, 이들 중 일부 쌍이 \(N-1\)개의 양방향 길로 연결되어 있고, 각 길의 길이는 1이다. 농부 존은 이 길들을 적절히 따라가면 어떤 목초지에서든 다른 어떤 목초지로도 이동할 수 있다는 것을 알았다.

농부 존의 농장은 연결되어 있지만, 그는 길 하나가 막히면 어떤 일이 일어날지 걱정하고 있다. 길 하나가 막히면 농장은 사실상 두 개의 분리된 목초지 집합으로 나뉘어, 소들은 각 집합 안에서는 이동할 수 있지만 집합 사이를 오갈 수는 없게 된다. 그래서 농부 존은 \(M\)개의 추가 양방향 길 (\(1 \leq M \leq 50,000\))을 건설한다. 각 추가 길의 길이는 \(10^9\) 이하의 양의 정수이다. 소들은 원래의 길 중 하나가 막히지 않는 한, 이동할 때 원래의 길만 사용한다.

원래의 길 중 하나가 막히면 농장은 두 개의 분리된 부분으로 나뉘고, 농부 존은 추가 길 중에서 이 두 부분의 연결을 복구하는 대체 길 하나를 선택하여, 소들이 다시 어떤 목초지에서든 다른 어떤 목초지로도 이동할 수 있게 한다.

농장의 원래 길 각각에 대해, 농부 존이 가장 짧은 적절한 대체 길을 선택할 수 있도록 도와주자.

출제자: Brian Dean

제약

출제자: Brian Dean

입력 형식

입력의 첫째 줄에 \(N\)\(M\)이 주어진다. 다음 \(N-1\)개의 줄에는 각각 원래 길 하나를 나타내는 정수 \(p\), \(q\)가 주어진다. 여기서 \(p \neq q\)는 그 길이 연결하는 두 목초지이다 (\(1 \ldots N\) 범위). 나머지 \(M\)개의 줄에는 각각 추가 길 하나를 나타내는 세 정수 \(p\), \(q\), \(r\)가 주어지며, \(r\)는 그 길의 길이이다. 임의의 두 목초지 사이에는 길이 최대 하나만 존재한다.

출력 형식

입력에 나타난 순서대로 \(N-1\)개의 원래 길 각각에 대해, 그 길이 막혔을 때 농장을 다시 연결할 수 있는 가장 짧은 적절한 대체 길의 길이를 출력한다. 적절한 대체 길이 존재하지 않으면 -1을 출력한다.

Standard input / output
This problem is judged over standard input/output. The original contest used named files — if you prefer the classic interface, tick “File I/O” on the submit form and read/write these files instead:
입력을 읽을 파일 disrupt.in · 출력을 쓸 파일 disrupt.out
예제 1
입력
6 3
1 2
1 3
4 1
4 5
6 5
2 3 7
3 6 8
6 4 5
출력
7
7
8
5
5
문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2017-2018 > US Open > Platinum

태그

평가 및 의견

Disruption

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Disruption

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
파일 입출력 (disrupt.in / disrupt.out — classic USACO interface; off = stdin/stdout)
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8