求POJ1330(Nearest Common Ancestors) 0ms算法
题目地址:
http://poj.org/problem?id=1330
已经优化到16ms,再也降不下来了,好奇那些0ms的算法难道scanf不用时间吗。。。
[解决办法]
#include <iostream>using namespace std ;#define N 10001int main(){ int t[N] , test , n , p , c , a , b ; bool flag[N] ; scanf("%d",&test) ; memset(t,0,sizeof(t)) ; memset(flag,false,sizeof(flag)) ; while (test--) { scanf("%d",&n) ; for (int i = 1 ; i < n ; ++ i) { scanf("%d%d",&p,&c) ; t[c] = p ; } scanf("%d%d",&a,&b) ; flag[a] = true ; while (t[a]) { flag[t[a]] = true ; a = t[a] ; } if (flag[b]) { printf("%d\n",b) ; continue ; } while (t[b]) { if (flag[t[b]]) break ; b = t[b] ; } printf("%d\n",t[b]) ; memset(t,0,sizeof(int)*(n+1)) ; memset(flag,false,sizeof(bool)*(n+1)) ; } return 0 ;}