比赛 至少完成十道练习 评测结果 AAAAAA
题目名称 无根树转有根树 最终得分 100
用户昵称 Mealy 运行时间 0.655 s
代码语言 C++ 内存使用 16.53 MiB
提交时间 2017-05-22 19:21:59
显示代码纯文本
//1642
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>

const int nmax=1000010;

using namespace std;

int N,Q,R;
int u,v,x;
int F[nmax]={0};
bool vis[nmax]={0};
vector<int > G[nmax];

void DFS(int tmpx){
	vis[tmpx]=1;
	for(int i=0;i<G[tmpx].size();i++){
		int v=G[tmpx][i];
		if(!vis[v]){
			F[v]=tmpx;
			DFS(v);
		}
	}
}	

void PreDo(){
	
	scanf("%d%d",&N,&R);
	memset(vis,0,sizeof(vis));
	memset(F,0,sizeof(F));
	F[R]=-1;
	
	for(int i=1;i<=N-1;i++){
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		G[v].push_back(u);
	}
	DFS(R);
	scanf("%d",&Q);
	for(int i=1;i<=Q;i++){
		scanf("%d",&x);
		printf("%d ",F[x]);
	}
}

int main(){
	freopen("wgs.in","r",stdin);
	freopen("wgs.out","w",stdout);
	PreDo();
	return 0;
}