hihocoder 1067(最近公共祖先tarjin)
来源:互联网 发布:机械结构优化设计 编辑:程序博客网 时间:2024/05/30 04:53
#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<vector>#define MAXN 100050using namespace std;map<string,int>id; //保存名字的标号vector<int>edge[MAXN]; //邻接表vector<int>query[MAXN]; //保存含某个名字的所有问题的标号string name[MAXN]; //保存名字string q1[MAXN],q2[MAXN]; //保存每个问题的左右两个名字int ans[MAXN];int fa[MAXN];int name_s=1;int get_id(string str){ if(!id[str]) { id[str]=name_s; name[name_s++]=str; } return id[str];}int Find(int x){ return x==fa[x]?x:fa[x]=Find(fa[x]);}void dfs(int loc,int pre) //前序遍历{ fa[loc]=loc; for(int i=0;i<edge[loc].size();i++) dfs(edge[loc][i],loc); for(int i=0;i<query[loc].size();i++) //含这个节点(名字)的所有问题 { int j=query[loc][i]; int tmp=loc==id[q1[j]]? id[q2[j]] : id[q1[j]]; //找当前问题的另一个名字 if(fa[tmp]==-1) //另一个名字没访问过 continue; ans[j]=Find(tmp); } fa[loc]=Find(fa[pre]); //合并到当前节点的根节点 return;}int main(){ int n; string a,b; int t1,t2; scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>a>>b; t1=get_id(a); t2=get_id(b); edge[t1].push_back(t2); } scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>q1[i]>>q2[i]; query[id[ q1[i] ] ].push_back(i); query[id[ q2[i] ] ].push_back(i); } memset(fa,-1,sizeof(fa)); fa[0]=0; dfs(1,0); for(int i=1;i<=n;i++) cout<<name[ans[i]]<<endl; return 0;}
阅读全文
0 0
- hihocoder 1067(最近公共祖先tarjin)
- 最近公共祖先LCA问题(特别是Tarjin算法) 转
- [HiHoCoder]#1067 : 最近公共祖先·二
- hihoCoder 1067 最近公共祖先·二
- [HihoCoder]#1067 : 最近公共祖先·二
- hihoCoder - 1062 - 最近公共祖先·一 (树的最近公共祖先问题!)
- hihocoder#1060之最近公共祖先(一)
- hihoCoder 1062 : 最近公共祖先·一(map+lca)
- hihoCoder 1067 : 最近公共祖先·二(map+离线Tarjan算法)
- hihocoder:#1062 : 最近公共祖先·一
- hihocoder第十三周最近公共祖先
- [hihoCoder]#1062 : 最近公共祖先·一
- HihoCoder第十三周:最近公共祖先 一
- hihoCoder 1062 最近公共祖先·一
- hihoCoder 1069 最近公共祖先·三
- hihoCoder 1069 最近公共祖先 在线算法
- 【算法】最近公共祖先(hihoCoder #1062)
- [HihoCoder]#1062 : 最近公共祖先·一
- ERROR 2003 (HY000):Can't connect to MySQL server on 'localhost' (10060)
- python 手记4 〖笨方法学python习题19〗
- 设置树莓派键盘布局错乱
- Halcon标定方式Camera_calibration()摄像机标定(函数详解)
- Java之多线程AtomicInteger (多人买票) -yellowcong
- hihocoder 1067(最近公共祖先tarjin)
- LeetCode
- 解决ssh登录,找不到匹配的host key算法
- 数据库读取指定数组集
- Flask-migrate
- Mysql系列——数据库运维(1)——数据库版本介绍及安装-bin
- poj2385 Apple Catching
- HDU 4773 反演变换
- leetcode 36 isValidSudoku