Hide

Problem C
Fyrtornen

Languages en sv

Vi har ett kvadratiskt rutnät på $n \times n$ rutor. Det finns $m$ stycken fyrtorn utplacerade. Till en början är alla “släckta”, men när du tänder ett av dem så tänds samtliga andra fyrtorn som har en $x$- eller $y$-koordinat gemensam med det redan tända tornet, och detta forsätter sedan rekursivt. Antag nu att du själv får tända $k$ torn, och att du ska tända tornen så att så många som möjligt lyser på slutet. Hur många torn kan du få att lysa?

Indata

Den första raden av indata innehåler heltalen $n$, $m$ och $k$ ($1 \leq n \leq 3 \cdot 10^5$, $1 \leq m \leq 5 \cdot 10^5$, $1 \leq k \leq m$).

De följande $m$ radera innehåller vardera heltalskoordinaterna $(x_i, y_i)$ för varje fyrtorn, som uppfyller $0 \le x_i, y_i < n$. Det står som mest ett torn på varje ruta. Du kan inte förutsätta att fyrtornen står jämnt utspridda.

Utdata

Skriv ut ett heltal: det största antalet fyrtorn du kan lysa upp om du sätter på som mest $k$ stycken.

Poängsättning

Din lösning kommer att testas på en mängd testfallsgrupper. För att få poäng för en grupp så måste du klara alla testfall i gruppen.

Grupp

Poäng

Gränser

$1$

$10$

$m \leq 2000$

$2$

$30$

$m \leq 30000$

$3$

$60$

Inga ytterligare begränsningar.

Sample Input 1 Sample Output 1
4 5 2
0 0
1 1
0 1
2 2
3 3
4
Sample Input 2 Sample Output 2
20 15 4
19 2
6 15
18 6
18 11
0 10
9 12
17 8
14 2
17 10
3 9
12 11
5 19
0 4
13 11
1 5
11

Please log in to submit a solution to this problem

Log in