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; }