#include using namespace std; typedef long long ll; #define all(x) (x).begin(),(x).end() const int mod=1000000007,MAX=100003,MAX_LOG=20,INF=1<<30; vector G[MAX]; int seen[MAX],cnt[MAX]; int N,par[MAX_LOG][MAX],dis[MAX]; void BFS(int u){ queue Q; Q.push(u); dis[u]=0; while(!Q.empty()){ int a=Q.front(); Q.pop(); for(int i=0;idis[v]) swap(u,v); for(int i=0;i<20;i++){ if(((dis[v]-dis[u])>>i)&1) v=par[i][v]; } if(u==v)return u; for(int i=19;i>=0;i--){ if(par[i][u]!=par[i][v]){ u = par[i][u]; v = par[i][v]; } } return par[0][u]; } int parrrr[MAX],size[MAX]; void UFinit(int n){ for(int i=0;i>N>>M>>Q; UFinit(N); for(int i=0;i>a>>b; a--;b--; G[a].push_back(b); G[b].push_back(a); unite(a,b); } ll ans=0; for(int i=0;i>a>>b; a--;b--; if(check(a,b)){ ans+=dis[a]+dis[b]-2*dis[lca(a,b)]; }else{ cnt[a]++; cnt[b]++; } } for(int i=0;i