Hide

Problem A
Disjunkte mængder (enkel)

Languages da en

Vedligehold en familie af disjunkte mængder, oprindeligt etpunktsmængderne $ \{ 0\} ,\{ 1\} , \ldots ,\{ n-1\} $, under følgende operationer:

? (»forespørgsel«)

Forespørgslen tager to elementer $s$ og $t$ og afgør, om $s$ og $t$ tilhører samme mængde. Mere nøjagtigt gælder, at når $s\in S$ og $t\in T$, så er svaret »1« hvis $S=T$ og »0« hvis $S\neq T$.

= (»forening«)

Foreningsoperationen tager to elementer $s$ og $t$ og danner foreningsmængden af de to mænger, der indeholder $s$ og $t$. Mere nøjagtigt gælder, at når $s\in S$ og $t\in T$ med $S\neq T$, så fjernes $S$ og $T$ fra familjen, og mængden $S\cup T$ tilføjes. (Når $S=T$, sker der ingenting.)

Læg mærke til, at disse operationer opretholder invarianten om, at familjens mængder er disjunkte.

Testgrupper

Der er to testgrupper.

Testgruppe

Point

Problemstørrelse

1

50

$n,m\leq 1\, 000$

2

50

$n,m\leq 100\, 000$

Indlæsning

Indlæsningen begynder med to positive heltal $n$, $m$ på første linje. Tallet $n$ er antallet af oprindelige etpunksmængder. De følgende $m$ linjer har formen »? $s$ $t$« eller »= $s$ $t$«, for henholdsvis forespørgsel og forening. Du kan antage $0\leq s< n$, $0\leq t< n$ og $m\geq 1$.

Udskrift

For hver forespørgsel, skriv en linje med »1« eller »0« som beskrevet foroven.

Sample Input 1 Sample Output 1
4 9
? 0 1
= 0 1
? 0 1
= 1 2
? 1 2
? 0 3
= 2 3
? 2 3
? 0 3
0
1
1
0
1
1
Sample Input 2 Sample Output 2
2 2
= 0 0
? 0 1
0

Please log in to submit a solution to this problem

Log in