麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

hihoCoder 1067 : 最近公共祖先·二(map+離線Tarjan算法)

2019-11-10 20:36:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

題目鏈接:http://hihocoder.com/PRoblemset/problem/1067

【思路分析】離線算法是把所有的詢問(wèn)先存儲(chǔ)起來(lái),然后在深搜的過(guò)程中計(jì)算結(jié)果。本題本來(lái)就是一棵有根樹(shù),應(yīng)該先計(jì)算根節(jié)點(diǎn)是多少,然后再?gòu)母?jié)點(diǎn)進(jìn)行深搜。實(shí)現(xiàn)為+深搜+并查集。 【AC代碼】

#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#include<map>#include<vector>using namespace std;#define N 100005int n,m;vector<int>G[N];map<string,int>num;vector<pair<int, int> >indexQuery[N];int result[N];int pre[N];string Name[N];int fin(int x){ if(pre[x]==x) { return x; } else { return pre[x]=fin(pre[x]); }}int fin1(int x){ if(pre[x]==-1) { return x; } else { return pre[x]=fin(pre[x]); }}void lca(int u){ pre[u]=u; for(int i=0;i<G[u].size();i++) { int v=G[u][i]; lca(v); pre[v]=u; } for(int j=0;j<indexQuery[u].size();j++) { pair<int, int> p=indexQuery[u][j]; if(pre[p.first]!=-1) { result[p.second]=fin(p.first); } }}int main(){ while(~scanf("%d",&n)) { num.clear(); int cnt=0; //memset(pre,-1,sizeof(pre)); for(int i=0;i<N;i++)pre[i]=-1; for(int i=0;i<n;i++) { string str1,str2; cin>>str1>>str2; if(num.count(str1)==0) { num[str1]=cnt; Name[cnt]=str1; cnt++; } if(num.count(str2)==0) { num[str2]=cnt; Name[cnt]=str2; cnt++; } G[num[str1]].push_back(num[str2]); pre[num[str2]]=num[str1]; } scanf("%d",&m); for(int i=0;i<m;i++) { string str1,str2; cin>>str1>>str2; int num1=num[str1]; int num2=num[str2]; indexQuery[num1].push_back(make_pair(num2, i)); indexQuery[num2].push_back(make_pair(num1, i)); } int root=fin1(0); for(int i=0;i<N;i++)pre[i]=-1; lca(root); for(int i=0;i<m;i++) { cout<<Name[result[i]]<<endl; } } return 0;}
上一篇:P1048 采藥

下一篇:P1996 約瑟夫問(wèn)題

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91九色视频观看 | 婷婷一区二区三区 | 国产成人精品免费视频大全最热 | 国产自91精品一区二区 | 久久久久99精品 | 一区二区免费看 | 日日碰日日操 | 成人一级黄色 | 18pao国产成人免费视频 | 91成人免费在线观看 | 成人性视频在线 | 中文日韩字幕 | 7777奇米成人四色影视 | 欧美一区二区黄 | 久久草草亚洲蜜桃臀 | 伊人网站| 意大利av在线| av在线1 | 久久成人在线观看 | 亚洲影视在线 | 一级毛片免费大片 | 91成人免费在线观看 | 色播视频在线播放 | 国产精品二区高清在线 | 久久久久久久久久亚洲精品 | 干一夜综合 | 国产在线观看91精品 | 国产一级做a爰片在线看 | 欧美a在线观看 | 91网站链接 | 日本在线视频一区二区三区 | 成人mm视频在线观看 | 手机免费看一级片 | 欧美18—19sex性护士中国 | 国产精品久久久久网站 | 精品国产一区二区三区四区在线 | 欧美一级片在线 | 草b视频在线观看 | 日本一区二区在线看 | 萌白酱福利视频在线网站 | 欧美成人免费在线视频 |