本题暂时没有 SPJ,这里提供本人编写的 Special Judge.
#include "testlib.h"
#include<bits/stdc++.h>
using namespace std;
int main(int argc,char* argv[]){
registerTestlibCmd(argc,argv);
int t=inf.readInt();
while(t--){
int n=inf.readInt();
vector<int> f1(n),f2(n),r(n);
vector<vector<int> > g(n);
for(int i=1;i<n;i++){
int v=inf.readInt(),p=inf.readInt();
f1[--v]=--p,g[p].emplace_back(v);
}
int m=inf.readInt();
vector<bool> b(n),d(n);
for(int i=1;i<m;i++){
int v=inf.readInt(),p=inf.readInt();
f2[--v]=--p,b[v]=b[p]=true;
}
for(int i=0;i<n;i++){
if(!f1[i])f1[i]=-1;
if(b[i]&&!f2[i])f2[i]=-1;
}
int q=ouf.readInt();
while(q--){
int u=ouf.readInt(1,n),v=ouf.readInt(1,n);
if(u>v)swap(u,v);
if(--u==--v||f1[u]!=f1[v])quitf(_wa,"Wrong Answer");
for(int i:g[u])if(!d[i])f1[i]=v,g[v].emplace_back(i);
g[u].clear(),f1[u]=0,d[u]=true;
}
for(int i=0;i<n;i++)
if(f1[i]!=f2[i])quitf(_wa,"Wrong Answer");
}
quitf(_ok,"Accepted");
return 0;
}