Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓
Statistics

Givet är heltal $n, m > 0$, samt heltal $a_1, a_2, \dots, a_n \in \{-1, 0, 1, \dots, m - 1\}$. Konstruera ett träd $T$ med $n$ hörn $V = \{v_1, v_2, \dots, v_n\}$ med följande villkor: för varje hörn $v_i$ där $a_i \ne -1$ måste resten då graden $\deg_T(v_i)$ divideras med $m$ vara lika med $a_i$. Om $a_i = -1$ finns det inga begränsningar på graden för $v_i$.

Indata

Den första raden i indatan innehåller ett heltal $t$, antalet testfall ($1 \le t \le 5 \cdot 10^5$). För varje testfall:

Den första raden innehåller två heltal, $n$ och $m$, som anger antalet hörn i trädet och modulen ($1 \le n \le 5 \cdot 10^5$; $1 \le m \le 2 \cdot 10^9$).

Nästa rad innehåller $n$ heltal $a_1, a_2, \dots, a_n$ som anger de begärda resterna ($-1 \le a_i < m$).

Summan av $n$ över alla testfall överstiger inte $5 \cdot 10^5$.

Utdata

För varje testfall, om ett sådant träd med $n$ hörn existerar, skriv ut "YES" (skiftlägesokänsligt), följt av $n - 1$ rader med två heltal vardera som anger ändpunkterna för varje kant. Annars, skriv ut "NO" (skiftlägesokänsligt).

Exempel

Indata

6
1 5
0
2 3
1 1
5 4
0 1 1 1 1
6 2
1 0 0 0 0 1
3 2
1 1 1
4 10
3 3 1 1

Utdata

YES
YES
1 2
YES
1 2
1 3
1 4
1 5
YES
1 2
2 3
3 4
4 5
5 6
NO
NO

Anmärkning

I det första testfallet ombeds vi bygga ett träd med $n = 1$ hörn, $m = 5$, och gradrestfältet $b = [0]$. Med bara ett hörn kan det inte finnas några kanter, så det finns exakt ett möjligt träd: ett enda hörn av grad $0$. Eftersom $0 \bmod 5 = 0$ uppfyller det kravet; alltså är svaret "YES".

I det andra testfallet behöver vi ett träd på $n = 2$ hörn med $m = 3$ och resterna $b = [1, 1]$, vilket innebär att båda graderna måste vara kongruenta med $1$ modulo $3$. På två hörn finns det bara ett träd: den enda kanten $1-2$. Dess grader är $(1, 1)$ och mycket riktigt är $1 \bmod 3 = 1$, så svaret är "YES", och att skriva ut "1 2" är giltigt.

I det tredje testfallet behöver vi $n = 5$, $m = 4$, med resterna $b = [0, 1, 1, 1, 1]$: det första hörnet måste ha en grad som är delbar med $4$, medan de andra fyra hörnen måste ha $\text{degree} \equiv 1 \pmod 4$. En naturlig konstruktion är en stjärna centrerad i hörn $1$: förbind $1$ med varje annat hörn. Då är $\deg(1) = 4$ och $4 \bmod 4 = 0$, medan vart och ett av $2, 3, 4, 5$ har grad $1$ och $1 \bmod 4 = 1$. Därför är svaret "YES", och kanterna "1 2", "1 3", "1 4", "1 5" fungerar.

I det fjärde testfallet behöver vi ett träd med $n = 6$, $m = 2$, resterna $b = [1, 0, 0, 0, 0, 1]$, dvs. ändpunkterna måste ha udda grad och de fyra mittersta hörnen måste ha jämn grad. Modulo $2$ är detta rent ett paritetsvillkor. Den enkla vägen $1-2-3-4-5-6$ passar perfekt: hörnen $1$ och $6$ har grad $1$ (udda), och hörnen $2, 3, 4, 5$ har grad $2$ (jämn). Alltså är svaret "YES", och vägens kanter är korrekta.

I det femte testfallet ombeds vi bygga en graf (och därmed i synnerhet ett träd) på $n = 3$ med $m = 2$ och $b = [1, 1, 1]$, så varje hörn måste ha udda grad. Detta är omöjligt: i varje oriktad graf är antalet hörn med udda grad alltid jämnt, så tre udda grader kan inte förekomma för någon mängd kanter. Därför är svaret "NO".

I det sjätte testfallet har vi $n = 4$, $m = 10$, $b = [3, 3, 1, 1]$. Eftersom $m > n - 1 = 3$ är resten modulo $10$ lika med själva graden, så vi kräver exakt $\deg = [3, 3, 1, 1]$. Det tvingar två hörn att vara grannar med alla andra (grad $3$ i en graf med $4$ hörn), och när $n > 2$ bildar varje sådant par nödvändigtvis en cykel tillsammans med vilket tredje hörn som helst. Ett träd kan inte innehålla cykler, så svaret är också "NO".

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1219EditorialOpen题解jianglyView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.