#include #define ll long long #define ld long double #define fi first #define se second #define pll pair #define INF (1ll << 60) #define ppl pair #define vl vector #define vvl vector #define FOR(i,a,b) for(ll i=a;i & p){ if(p[x]!=x){ p[x] = find(p[x] , p); } return p[x]; } bool unioni(int u, int v , vector &p , vector &rank){ u = find(u,p); v = find(v,p); if(u==v) return false; if(rank[v] < rank[u]){ p[v] = u; }else if(rank[u]>n>>e>>pr; vector rank(n,0); vector p(n); vector> G(n); for(int i=0;i>u>>v; u--;v--; G[u].push_back(v); G[v].push_back(u); } for(int i=0;i>m; map mapa; vector vs(m); int res=0; for(int j=0;j>k; k--; vs[j]=k; mapa[k]=true; for(int v : G[k]){ if(mapa[v]){ unioni(k,v,p,rank); } } } for(int v:vs){ // cout << p[v] << v << endl; if(p[v]==v){ res++; } p[v]=v; rank[v]=0; } cout << res <