RQNOJ 28 [Stupid]愚蠢的宠物 解题报告

  直接搜就是了,一个点向根出发,到的每个都记录一下,然后另一个点再搜,第一个被标记的就是了。

#include <stdio.h>
#include <stdlib.h>
int p[1000001];
int time[1000001];

void srch(int i)
{
	while(i != 1){
		time[i] = 1;
		i = p[i];
	}
	time[i] = 1;
}

int main(int argc, char **argv)
{
	int i, n;
	int a, b;
	scanf("%d", &n);
	for(i = 1; i < n; i++){
		scanf("%d%d", &a, &b);
		p[b] = a;
	}
	scanf("%d%d", &a, &b);
	srch(a);
	i = b;
	while(!time[i]){
		i = p[i];
	}
	printf("%d\n", i);
	return 0;
}

  

posted @ 2011-08-21 16:58  zqynux  阅读(222)  评论(0编辑  收藏  举报