#include using namespace std; using ll = long long; using ld = long double; using uc = unsigned char; #ifdef DEB #define D if(1) #else #define D if(0) #endif const int NMAX = 212345; const ll RNMAX = 100003; struct Vr { Vr * root; vector n; vector maly; bool is; void komp(Vr * r) { if(root) return; if(!is) return; root = r; for(Vr * it : n) it->komp(root); } void malykomp(Vr * r) { if(root) return; root = r; for(Vr * it : maly) it->malykomp(root); } }; Vr vr [NMAX]; int n,m,q; Vr * ask[NMAX]; uc hrmat[RNMAX*RNMAX/2/8]; ll prepocet(ll a,ll b) { if(a>b) return prepocet(b,a); return b*(b-1)/2+a; } int main() { scanf("%d%d%d",&n,&m,&q); for(int i=0;imax(n,m)) //if(0) { D printf("VELKY"); for(int i=0;iis=1; } for(int i=0;imaly.clear(); ask[i]->root=0; } for(int i=0;imaly.push_back(ask[j]); ask[j]->maly.push_back(ask[i]); } } for(int i=0;iroot==0) { out++; ask[i]->malykomp(ask[i]); } } } printf("%d\n",out); } return 0; }