hihoCoder 1067 最近公共祖先·二
来源:互联网 发布:java多泛型 编辑:程序博客网 时间:2024/06/11 18:27
#include <bits/stdc++.h>using namespace std;map<string,int> nameMap;string names[100005];struct node{int pa;vector<int> son;vector<pair<int,int> > qu;node() : pa(-1){}}no[100005];int ans[100005];int findset(int x){ if(x != no[x].pa) no[x].pa = findset(no[x].pa); return no[x].pa;}void dfs(int f){no[f].pa = f; int len = no[f].son.size();for(int i=0 ;i<len;i++){int index = no[f].son[i];dfs(index);no[index].pa = f;}int qlen = no[f].qu.size();for(int i=0; i<qlen; i++){pair<int, int> p = no[f].qu[i];if(no[p.first].pa != -1)ans[p.second] = findset(p.first);}}int main(){int N,M;scanf("%d",&N);for(int i=0; i<N; i++){string fa,son;cin>>fa>>son;if(nameMap.find(fa) == nameMap.end())nameMap[fa] = nameMap.size();if(nameMap.find(son) == nameMap.end())nameMap[son] = nameMap.size();int nf = nameMap[fa], ns = nameMap[son];names[nf] = fa;names[ns] = son;no[nf].son.push_back(ns);}scanf("%d",&M);for(int i=0; i<M; i++){string qu1,qu2;cin>>qu1>>qu2;int n1 = nameMap[qu1], n2 = nameMap[qu2];no[n1].qu.push_back(make_pair(n2,i));no[n2].qu.push_back(make_pair(n1,i));}dfs(1);for(int i = 0; i < M ; i++)//puts(names[ans[i]].c_str());cout<<names[ans[i]]<<endl;return 0;}
0 0
- [HiHoCoder]#1067 : 最近公共祖先·二
- hihoCoder 1067 最近公共祖先·二
- [HihoCoder]#1067 : 最近公共祖先·二
- hihocoder 1067 最近公共祖先·二(tarjan LCA 离线算法O(n))
- hihocoder 1067 最近公共祖先·二 并查集+stl
- hihoCoder 1067 : 最近公共祖先·二(map+离线Tarjan算法)
- hihocoder 1067(最近公共祖先tarjin)
- hihocoder:#1062 : 最近公共祖先·一
- [hihoCoder]#1062 : 最近公共祖先·一
- hihoCoder 1062 最近公共祖先·一
- hihoCoder 1069 最近公共祖先·三
- [HihoCoder]#1062 : 最近公共祖先·一
- [HihoCoder]#1069 : 最近公共祖先·三
- hihoCoder 1062 最近公共祖先·一
- hihocoder 1062 : 最近公共祖先·一
- hihocoder#1062 : 最近公共祖先·一
- 1067 : 最近公共祖先·二
- #1067 : 最近公共祖先·二
- Course Schedule -- leetcode
- Android 存储学习之在内部存储中读写文件
- Best Time to Buy and Sell Stock IV
- IIS6/7/8 WEB服务器不能访问grf报表模板文件的问题
- 解决Android 的模拟器显示乱码问题
- hihoCoder 1067 最近公共祖先·二
- 一个移动互联网自媒体的运营手记
- [深入理解Android卷一全文-第五章]深入理解常见类
- STL系列之一 deque双向队列
- linux下文件即文件夹操作
- DFS-POJ-1426-Find The Multiple
- hdu 5324 Boring Class
- 如何选择创业公司
- Linux Socket编程(不限Linux)