Hihocoder 1067
最近公共祖先二 离线算法
/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
typedef pair<int, int> P;
#define x first
#define y second
#define pb push_back
bool Sqrt(LL n) { return (LL)sqrt(n) * sqrt(n) == n; }
const double PI = acos(-1.0), ESP = 1e-10;
const LL INF = 99999999999999;
const int inf = 999999999, N = 1e5 + 24;
vector<int> G[N];
vector<P> Q[N];
map<string, int> H;
string a, b, m[N];
int A, B, fa[N], n, k, c, ans[N];
int fnd(int x) { return x == fa[x] ? x : fa[x] = fnd(fa[x]); }
void dfs(int u, int p)
{
fa[u] = u;
for(auto v : G[u]) if(v != p) dfs(v, u);
for(auto v : Q[u]) if(fa[v.x]) ans[v.y] = fnd(v.x);
fa[u] = p;
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
scanf("%d", &n);
while(n--) {
cin >> a >> b;
if(!(A = H[a])) { A = H[a] = ++c; m[c] = a;}
if(!(B = H[b])) { B = H[b] = ++c; m[c] = b;}
G[A].pb(B); G[B].pb(A);
}
scanf("%d", &k);
for(int i = 1; i <= k; i++) {
cin >> a >> b;
A = H[a]; B = H[b];
Q[A].pb(P(B, i)); Q[B].pb(P(A, i));
}
dfs(1, 0);
for(int i = 1; i <= k; i++) cout << m[ans[i]] << "\n";
return 0;
}
/*
input:
output:
modeling:
methods:
complexity:
summary:
*/
Hihocoder 1067的更多相关文章
- 【HIHOCODER 1067】最近公共祖先·二(LCA)
描述 上上回说到,小Hi和小Ho用非常拙劣--或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中辈分最低的一个是谁.远在美国的他们利用了一些奇妙的技术获得了国内许多人的 ...
- hihoCoder #1067 : 最近公共祖先·二 [ 离线LCA tarjan ]
传送门: #1067 : 最近公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站 ...
- HihoCoder 1067 最近公共祖先(ST离线算法)
最近公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个 ...
- hihoCoder#1067(离线算法求LCA)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中 ...
- Hihocoder #1067 : 最近公共祖先·二
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中 ...
- LCA统计
读入挂 inline void read(int &v) { v = ; ; ; ') { if (c == '-') { p = -; } c = getchar(); } ') { v = ...
- hihocoder -1121-二分图的判定
hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...
- Hihocoder 太阁最新面经算法竞赛18
Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...
- hihoCoder太阁最新面经算法竞赛15
hihoCoder太阁最新面经算法竞赛15 Link: http://hihocoder.com/contest/hihointerview24 题目1 : Boarding Passes 时间限制: ...
- 【hihoCoder 1454】【hiho挑战赛25】【坑】Rikka with Tree II
http://hihocoder.com/problemset/problem/1454 调了好长时间,谜之WA... 等我以后学好dp再来看为什么吧,先弃坑(╯‵□′)╯︵┻━┻ #include& ...
随机推荐
- js 判断gps是否超出设定范围
var CKposition = { //经纬度转换成三角函数中度分表形式 rad: function (d) { return d * Math.PI / 180.0; }, // 根据经纬度计算距 ...
- gin websocket
gin 中使用websocket功能 go get github.com/gorilla/websocket var upgrader = websocket.Upgrader{ CheckOrigi ...
- app对接微信支付(app支付)
(先补充一下,app唤醒微信支付失败的话,在确保没错的情况下,建议换一个手机或者重新下载微信,不知道是微信缓存还是什么原因) 1.先申请好开发环境 app支付不需要公众号,所以申请好开发商号和开发平台 ...
- Unity Shader实现《死亡搁浅》扫描效果!
https://mp.weixin.qq.com/s/4YwjxScnU0zprjGekAyvsw
- Dinic的几种复杂度
学了那么久网络流才发现自己不知道 Dinic 算法的一个在各边容量均为 \(1\) 的网络时复杂度上的结论.我说为啥学术社区那题优化建图复杂度是对的呢-- 以下均认为使用了当前弧优化与多路增广. 以下 ...
- idea var 总是有final
转自:https://blog.csdn.net/Grantr/article/details/119184963 解决idea中快捷键ctrl+alt+v多生成的final ctrl+alt+v快捷 ...
- mongoengine模型字段非严格校验FieldDoesNotExist
背景 最近需要从mongoDB中查询数据用于数据分析,一开始就用了pymongo后来发现使用起来很不方便,后面了解到有类似SQLAlchemy的ORM模块mongoengine能够操mongo 简单看 ...
- openpyxl-使用API总结
import openpyxlfrom openpyxl.comments import Comment from openpyxl.styles import Font, Alignment, Bo ...
- 删除没有刀路的刀具.txt
1 UF_initialize(); 2 std::vector<tag_t>tool_tag; 3 std::vector<tag_t>del_tag; 4 tag_t ...
- HCIA-ICT实战基础07-访问控制列表ACL进阶
HCIA-ICT实战基础-访问控制列表ACL进阶 目录 二层ACL技术及配置 高级ACL的扩展使用方法及使用场景 1 二层ACL技术及配置 1.1 二层ACL概念 使用报文的以太网帧头来定义规则, 根 ...