Mötesplats | 프로그래밍의 벗 PivotOJ
PivotOJ

Mötesplats

시간 제한: 25000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2021 — lagerBOJ 26958
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

NN stycken vänner bor på var sin nod i ett träd med NN noder, där NN är udda. Ett träd är en sammanhängande graf med exakt N1N-1 kanter.

Vännerna vill nu alla träffas på en nod i trädet. De har kommit fram till att de vill mötas på den noden som minimerar summan av distanserna till vännerna, och har frågat dig om du kan hjälpa dem att hitta denna optimala mötesplats. Distansen dist(a,b)\text{dist}(a,b) mellan två noder aa och bb i trädet är antalet kanter på vägen mellan aa och bb. Så formellt sett vill du hitta noden xx som minimerar i=1ndist(x,i)\sum_{i=1}^{n} \text{dist}(x,i).

Detta tänker du är ett lätt problem, och börjar genast koda en lösning. Men det finns en twist! Vännerna har dåligt minne och kommer inte ihåg hur trädet ser ut. Dock kommer de ihåg följande: givet tre olika vänner a,b,ca,b,c kan de med säkerhet säga att de brukar mötas (när det bara är dem tre) på plats xx, där xx är noden som minimerar dist(x,a)+dist(x,b)+dist(x,c)\text{dist}(x,a) +\text{dist}(x,b) +\text{dist}(x,c). Notera att xx inte nödvändigtvis är en av noderna a,ba,b eller cc.

I detta problem läser du alltså inte in grafen direkt i indatan, utan får istället fråga upp till Q1Q-1 frågor på formen: Var brukar vännerna a,b,ca,b,c mötas? Med hjälp av dessa frågor vill du hitta den optimala mötesplatsen.

[이미지 1]

Illustration av trädet i exempelfallet. Nod 2 är den optimala mötesplatsen.

예제

예제 1

입력
5 500000
1 2
2 3
2 4
4 5
출력
? 1 2 4
? 1 3 4
? 1 4 5
? 1 2 3
? 1 2 5
! 3
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.