Universal Cup Judging System

Universal Cup

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

Gitt er heltall $n, m > 0$, samt heltall $a_1, a_2, \dots, a_n \in \{-1, 0, 1, \dots, m - 1\}$. Konstruer et tre $T$ med $n$ noder $V = \{v_1, v_2, \dots, v_n\}$ med følgende betingelse: for hver node $v_i$ der $a_i \ne -1$, må resten når graden $\deg_T(v_i)$ deles på $m$ være lik $a_i$. Hvis $a_i = -1$, er det ingen begrensninger på graden til $v_i$.

Inndata

Den første linjen i inndataene inneholder et heltall $t$, antallet testtilfeller ($1 \le t \le 5 \cdot 10^5$). For hvert testtilfelle:

Den første linjen inneholder to heltall, $n$ og $m$, som angir antallet noder i treet og modulen ($1 \le n \le 5 \cdot 10^5$; $1 \le m \le 2 \cdot 10^9$).

Den neste linjen inneholder $n$ heltall $a_1, a_2, \dots, a_n$ som angir de påkrevde restene ($-1 \le a_i < m$).

Summen av $n$ over alle testtilfeller overstiger ikke $5 \cdot 10^5$.

Utdata

For hvert testtilfelle, hvis et slikt tre med $n$ noder finnes, skriv ut «YES» (uansett store/små bokstaver), etterfulgt av $n - 1$ linjer med to heltall hver som angir endepunktene for hver kant. Ellers, skriv ut «NO» (uansett store/små bokstaver).

Eksempel

Inndata

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

Merk

I det første testtilfellet blir vi bedt om å bygge et tre med $n = 1$ node, $m = 5$ og gradrest-tabell $b = [0]$. Med bare én node kan det ikke være noen kanter, så det finnes nøyaktig ett mulig tre: en enkelt node med grad $0$. Siden $0 \bmod 5 = 0$, oppfyller det kravet; dermed er svaret «YES».

I det andre testtilfellet trenger vi et tre på $n = 2$ noder med $m = 3$ og rester $b = [1, 1]$, som betyr at begge gradene må være kongruente med $1$ modulo $3$. På to noder finnes det bare ett tre: den ene kanten $1-2$. Gradene er $(1, 1)$ og $1 \bmod 3 = 1$, så svaret er «YES», og å skrive ut «1 2» er gyldig.

I det tredje testtilfellet trenger vi $n = 5$, $m = 4$, med rester $b = [0, 1, 1, 1, 1]$: den første noden må ha grad delelig med $4$, mens de fire andre nodene må ha $\text{degree} \equiv 1 \pmod 4$. En naturlig konstruksjon er en stjerne med sentrum i node $1$: koble $1$ til hver av de andre nodene. Da er $\deg(1) = 4$ og $4 \bmod 4 = 0$, mens hver av $2, 3, 4, 5$ har grad $1$ og $1 \bmod 4 = 1$. Derfor er svaret «YES», og kantene «1 2», «1 3», «1 4», «1 5» fungerer.

I det fjerde testtilfellet trenger vi et tre med $n = 6$, $m = 2$, rester $b = [1, 0, 0, 0, 0, 1]$, dvs. at endepunktene må ha odde grad og de fire midterste nodene må ha partallsgrad. Modulo $2$ er dette kun et paritetskrav. Den enkle stien $1-2-3-4-5-6$ passer perfekt: nodene $1$ og $6$ har grad $1$ (odde), og nodene $2, 3, 4, 5$ har grad $2$ (partall). Dermed er svaret «YES», og kantene på stien er korrekte.

I det femte testtilfellet blir vi bedt om å bygge en graf (og dermed spesielt et tre) på $n = 3$ med $m = 2$ og $b = [1, 1, 1]$, slik at hver node må ha odde grad. Dette er umulig: i enhver urettet graf er antallet noder med odde grad alltid et partall, så tre odde grader kan ikke forekomme for noen mengde kanter. Derfor er svaret «NO».

I det sjette testtilfellet har vi $n = 4$, $m = 10$, $b = [3, 3, 1, 1]$. Siden $m > n - 1 = 3$, er resten modulo $10$ lik selve graden, så vi krever nøyaktig $\deg = [3, 3, 1, 1]$. Det tvinger to noder til å være naboer med alle andre (grad $3$ i en graf med $4$ noder), og når $n > 2$, vil ethvert slikt par nødvendigvis danne en sykel sammen med en hvilken som helst tredje node. Et tre kan ikke inneholde sykler, så svaret er også «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.