eolymp
bolt
Try our new interface for solving problems
Məsələlər

Birləşdirmə və ayırma

Birləşdirmə və ayırma

Siz nə zaman isə dərininə dolaşmaq haqqında eşitmişsinizmi? Məsələn, bu alqoritmdən istifadə etməklə siz qrafın \textbf{O(E)} müddətində asılı olduğunu müəyyənləşdirə bilərsiniz. Siz hətta bu müddətdə asılılıq komponentlərinin sayını da təyin edə bilərsiniz. Bəs siz nə zaman isə kəsişməyən çoxluqlar sistemi haqqında eşitmişsinizmi? Bu strukturdan istifadə etməklə, siz tez bir zamanda “Qrafa til əlavə etmək" və "Qrafda asılılıq komponentlərinin sayını hesablamaq" kimi sorğuları emal edə bilərsiniz. Bəs siz nə zaman isə dinamik əlaqəlilik məsələsi haqqında eşitmişsinizmi? Bu məsələdə üç tip sorğu emal etmək lazımdır: \begin{enumerate} \item Qrafa til əlavə etmək. \item Qrafdan til çıxartmaq. \item Qrafda əlaqəlilik komponentlərinin sayını hesablamaq. \end{enumerate} \InputFile Başlanğıcda qraf boşdur. İlk sətirdə təpələrin və sorğuların sayını ifadə edən iki \textbf{N} və \textbf{K} (\textbf{1} ≤ \textbf{N} ≤ \textbf{300000}, \textbf{0} ≤ \textbf{K} ≤ \textbf{300000}) tam ədədləri verilir. Növbəti \textbf{K} sətrin hər birində sorğular verilir. Üç tip sorğu var: \begin{enumerate} \item \textbf{+ u v}: \textbf{u} və \textbf{v} təpələri arasına til əlavə etmək. Belə tilin olmadığına zəmanət verilir. \item \textbf{- u v}: \textbf{u} və\textbf{ v} arasındakı tili çıxartmaq. Belə tilin olduğuna zəmanət verilir. \item \textbf{?}: Qrafda əlaqəlilik komponentlərinin sayını hesablamalı. \end{enumerate} Təpələr \textbf{1}--dən \textbf{N}-ə qədər tam ədədlərlə nömrələnib. Bütün sorğularda \textbf{u} ≠ \textbf{v}. Qraf istiqamətlənməmiş hesab edilir. \OutputFile Bütün "\textbf{?}" tipli sorğular üçün sorğu anındakı əlaqəlilik komponentlərinin sayını hesablayın.
Zaman məhdudiyyəti 2 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB
Giriş verilənləri #1
5 11
?
+ 1 2
+ 2 3
+ 3 4
+ 4 5
+ 5 1
?
- 2 3
?
- 4 5
?
Çıxış verilənləri #1
5
1
1
2