POJ 1330 Nearest Common Ancestors
2017-07-20 11:31
260 查看
#include <iostream> #include <stdio.h> #include <cstring> #include <vector> #define N 100005 using namespace std; vector <int> vec[N] ; vector <pair<int,int> > query[N]; struct node{ int first , second; }e; vector <node> query[N]; int vis[N] , pre[N] , ans[N]; int Find(int x){ if(pre[x] == x){ return x; }else{ pre[x] = Find(pre[x]); return pre[x]; } } void dfs(int u , int fa){ pre[u] = u; vis[u] = 1; for(int i = 0 ; i < vec[u].size() ; i ++){ int v = vec[u][i]; if(v == fa) continue; dfs(v , u); } for(int i = 0 ; i < query[u].size() ; i++){ int v = query[u][i].first; int id = query[u][i].second; if(vis[v] == 1){ ans[id] = Find(v); } } pre[u] = fa; } int main(){ int T; scanf("%d" ,&T); while(T --){ int n , x, y; scanf("%d" , &n); for(int i = 0 ; i < n - 1 ; i ++){ scanf("%d%d" , &x , &y); vec[x].push_back(y); vec[y].push_back(x); vis[y] = 1; } for(int i = 1 ; i <= n ; i ++ ){ cout << i << "==========" << endl; for(int k = 0 ; k < vec[i].size() ; k ++){ cout << vec[i][k] << " "; } cout << endl; } int q; scanf("%d",&q); for(int i = 0 ; i < q ; i ++){ scanf("%d%d" , &x , &y); query[x].push_back({y , i}); query[y].push_back({x , i}); } for(int i = 1 ; i <= n ; i ++){ if(vis[i] == 0){ memset(vis , 0 ,sizeof(vis)); dfs(i , -1); break; } } for(int i = 0 ; i < q ; i ++){ printf("%d\n" ,ans[i]); } } }
相关文章推荐
- [POJ 1330] Nearest Common Ancestors (朴素方法)
- poj----1330Nearest Common Ancestors(简单LCA)
- POJ 1330 Nearest Common Ancestors LCA
- poj - 1330 - Nearest Common Ancestors
- LCA POJ 1330 Nearest Common Ancestors
- POJ 1330 — Nearest Common Ancestors
- poj 1330 Nearest Common Ancestors
- poj 1330 Nearest Common Ancestors(倍增法)
- poj1330 Nearest Common Ancestors LCA Tarjan 待补完
- POJ 1330 Nearest Common Ancestors(Tree)
- POJ1330 Nearest Common Ancestors【最近公共祖先】【Tarjan-LCA算法】
- POJ - 1330 Nearest Common Ancestors(dfs+ST在线算法|LCA倍增法)
- POJ 1330 Nearest Common Ancestors(tarjan , 倍增法求LCA) - from lanshui_Yang
- POJ 1330 Nearest Common Ancestors
- POJ 1330 Nearest Common Ancestors (LCA&Tarjan算法)
- POJ 1330 Nearest Common Ancestors【LCA】
- [置顶] poj-1330-Nearest Common Ancestors-LCA(RMQ)
- kyeremal-poj1330-Nearest Common Ancestors-最近公共祖先
- POJ1330(Nearest Common Ancestors)
- POJ 1330 Nearest Common Ancestors (LCA)