Prihlásenie Registrácia  

C1 - Asociálne siete: Trójsky kôň

Časový limit: 2s, Pamäťový limit: 64MiB

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3.4, Python 3.11

Počet bodov: 1

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

Tvorcovia prvej asociálnej siete narazili na ďalší pre nich neriešiteľný problém. Tentoraz sa ich systémom začal šíriť zákerný trójsky kôň. Funguje tak, že ak s napadnutým používateľom niekto vytvorí novú väzbu, automaticky sa nakazí a stáva sa tiež šíriteľom trójskeho koňa. Žiaľ, tvorcovia ho nevedia detekovať a tak chcú aspoň zistiť, koľko používateľov môže byť napadnutých.

Úloha

Programátori asociálnej siete teraz tvrdo pracujú na optimalizácii databázy, takže poskytnúť Ti môžu len záznam, ako chronologicky vznikali a zanikali prepojenia medzi jednotlivými používateľmi siete. Pre jednoduchosť je každý používateľ očíslovaný prirodzeným číslom od 1 po N. Na začiatku neexistujú medzi používateľmi žiadne spojenia. Ďalej sú definované prepojenia medzi jednotlivými používateľmi. Všetky prepojenia sú pritom obojsmerné. Používatelia sa môžu medzi sebou prepojiť aj viacnásobne. V tom prípade medzi nimi vznikne viacnásobná väzba. Keď sa používateľ rozhodne, že už nechce byť prepojený s iným používateľom, môže väzbu zrušiť. Každá takáto akcia ma za následok zrušenie len jedinej väzby. Ak ich existuje viac a používateľ už vôbec nechce byť spojený, musí väzbu zrušiť toľkokrát, koľkokrát bola predtým vytvorená. Po spracovaní celého záznamu treba napísať maximálny počet používateľov, ktorí môžu byť napadnutí zákerným trójskym koňom, ak na úplnom začiatku bolo napadnuté práve jedno konto.

Vstup

Prvý riadok vstupu obsahuje dve prirodzené čísla N a M oddelené medzerou. N je počet používateľov zaregistrovaných v systéme a M je počet záznamov. Ďalej nasleduje M riadkov, z ktorých každý obsahuje písmeno buď A alebo R a dve prirodzené čísla X a Y, 1 ≤ X < Y ≤ N, kde X a Y je dvojica používateľov, medzi ktorými sa vytvára alebo ruší väzba. O akú operáciu ide určuje písmeno na začiatku riadku. Písmeno A znamená pridanie väzby a písmeno R znamená jej odobratie. Vstup je vždy korektný, teda odobratie väzby môže byť v zázname len ak už taká väzba existuje.

Výstup

Výstupom má byť jediné celé číslo, maximálny možný počet napadnutých používateľov.

C1

1 ≤ N ≤ 100, 1 ≤ M ≤ 100

C2

1 ≤ N ≤ 1 000 000 000, 1 ≤ M ≤ 1000

Príklad

Vstup:

5 6
A 1 2
A 1 3
A 1 2
R 1 2
R 1 3
A 3 4

Výstup:

4

Vysvetlenie:

Ak bolo napadnuté konto používateľa 1, tak postupne priamo infikoval používateľov 2 a 3. Používateľ 3 následne infikoval používateľa 4.