#include #include using namespace std; void solve(){ int n,m; cin>>n>>m; vector> edge(n-1); for (int i=0;i>u>>v; u--;v--; edge[i]={u,v}; } vector> st(m); for (int i=0;i>s>>t; s--;t--; st[i]={s,t}; } vector l(m,0),r(m,n-1); while (r[0]-l[0]>1){ vector> idx(n); for (int i=0;i=0;i--){ auto [u,v]=edge[i]; uf.merge(u,v); for (int j:idx[i]){ auto [s,t]=st[j]; if (uf.same(s,t)) l[j]=i; else r[j]=i; } } } vector sum(n); sum[0]=m; for (int i=0;i>t; while (t--) solve(); }