Primärfaktor | 프로그래밍의 벗 PivotOJ
PivotOJ

Primärfaktor

시간 제한: 3000ms메모리 제한: 1024MB출처: Programmeringsolympiaden 2017 — lagerBOJ 20899

문제

“Vilket är världens högsta berg? Den högsta punkten på Mount Everests topp. OK, men vilket är världens näst högsta berg? Den näst högsta punkten på Mount Everests topp såklart.”

Med den här logiken blir listan på världens högsta berg väldigt dum. Men det finns en lösning, man introducerar begreppet primärfaktor. Primärfaktorn hos ett berg är det minsta avståndet i höjdled man måste gå ner från berget för att komma till ett strikt högre berg. Det funkar som ett slags mått på hur självständigt ett berg är, och om man rensar bort alla punkter med primärfaktor mindre än 200 m, så blir man av med alla fåniga små berg som egentligen sitter på högre berg. Det här problemet handlar om att hitta alla primärfaktorer i en graf.

Vi har en graf med nn noder och mm kanter, där varje nod ii har ett icke-negativt heltal h(i)h(i), nodens höjd. En nods primärfaktor P(i)P(i) är den minsta höjden man måste gå ner från noden för att komma till en nod med strikt högre höjd. Här kommer en lite mer matematisk definition: Låt G(i)G(i) vara mängden av alla vägar från noden ii till någon annan nod jj sådan att h(j)>h(i)h(j) > h(i). Primärfaktorn hos ii definieras som 

P(i)=minγG(i){h(i)minkγ(h(k))}P(i) = \min_{\gamma \in G(i)} \left\{ h(i) - \min_{k\in \gamma}(h(k)) \right\}

Om G(i)=G(i) = \emptyset, dvs om det överhuvudtaget inte går att ta sig till en nod med högre höjd, så säger vi att primärfaktorn är h(i)h(i).

Givet en graf, hitta alla noders primärfaktorer.

입력

En rad med två heltal, nn och mm. En rad med nn heltal 0h(i)1090 \leq h(i) \leq 10^9, nodernas höjder. mm rader med två heltal, aa och bb (1a,bn1 \leq a,b \leq n), vilket betyder att en kant går mellan noderna aa och bb.

출력

En rad med nn heltal, nodernas primärfaktorer.

예제

예제 1

입력
5 4
3 2 5 1 6
1 2
2 3
3 4
4 5
출력
1 0 4 0 6

예제 2

입력
6 7
1 2 3 4 5 6
1 2
1 3
1 6
2 3
2 4
2 5
3 4
출력
0 0 0 2 4 6
코드를 제출하려면 로그인하세요.