【题目】http://acm.hdu.edu.cn/showproblem.php?pid=3974
【题意】
【思路】
【代码】
#include<bits/stdc++.h>
const int M=50005;
int fa[M];
int task[M];
int tsknum[M];
int tot=0;
int main()
{
int tt,ccase=1;
scanf("%d",&tt);
while(tt--)
{
memset(fa,-1,sizeof(fa));
memset(task,-1,sizeof(task));
memset(tsknum,0,sizeof(tsknum));
tot=0;
int n,a,b;
scanf("%d",&n);
for(int i=0; i<n-1; i++)
{
scanf("%d%d",&a,&b);
fa[a]=b;
}
int m;
scanf("%d",&m);
printf("Case #%d:\n",ccase++);
while(m--)
{
char x[5];
scanf("%s",x);
if(x[0]=='C')
{
int q,t=-1,v=-1;
scanf("%d",&q);
while(q!=-1)
{
if(t<tsknum[q])
{
t=tsknum[q];
v=task[q];
}
q=fa[q];
}
printf("%d\n",v);
}
else
{
int t,v;
scanf("%d%d",&t,&v);
tsknum[t]=++tot;
task[t]=v;
}
}
}
}