最近公共祖先二 离线算法

/**/
#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的更多相关文章

  1. 【HIHOCODER 1067】最近公共祖先·二(LCA)

    描述 上上回说到,小Hi和小Ho用非常拙劣--或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中辈分最低的一个是谁.远在美国的他们利用了一些奇妙的技术获得了国内许多人的 ...

  2. hihoCoder #1067 : 最近公共祖先·二 [ 离线LCA tarjan ]

    传送门: #1067 : 最近公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站 ...

  3. HihoCoder 1067 最近公共祖先(ST离线算法)

    最近公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个 ...

  4. hihoCoder#1067(离线算法求LCA)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中 ...

  5. Hihocoder #1067 : 最近公共祖先·二

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中 ...

  6. LCA统计

    读入挂 inline void read(int &v) { v = ; ; ; ') { if (c == '-') { p = -; } c = getchar(); } ') { v = ...

  7. hihocoder -1121-二分图的判定

    hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...

  8. Hihocoder 太阁最新面经算法竞赛18

    Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...

  9. hihoCoder太阁最新面经算法竞赛15

    hihoCoder太阁最新面经算法竞赛15 Link: http://hihocoder.com/contest/hihointerview24 题目1 : Boarding Passes 时间限制: ...

  10. 【hihoCoder 1454】【hiho挑战赛25】【坑】Rikka with Tree II

    http://hihocoder.com/problemset/problem/1454 调了好长时间,谜之WA... 等我以后学好dp再来看为什么吧,先弃坑(╯‵□′)╯︵┻━┻ #include& ...

随机推荐

  1. css 启动页 loading动画

    <div class="index-html-loader"> <div class="text">Loading...</div ...

  2. winform 登录后跳转百度地图报错 使用委托解决

    最近用winform做一个登录后跳转到百度地图的小程序,使用了线程,winform的UI是单线程操作的,由于百度地图写在另外一个窗体,导致报错.后来使用了委托解决了这个小问题. delegate vo ...

  3. Vue3+vite+Echarts案例大屏可视化--千峰(推荐)

    https://www.bilibili.com/video/BV14u411D7qK?p=33&spm_id_from=pageDriver&vd_source=e2cfe74d93 ...

  4. 安装SSMS出现许可证被颁发者直接吊销

    出现这种情况,使用以下链接下载rootsupd.exe程序:http://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip 运 ...

  5. JS 将伪数组转换成数组

    在 JS 中,伪数组 是非常常见的,它也叫 类数组.伪数组可能会给 JS 初学者带来一点困扰. 本文将详细讲解 什么是伪数组,以及分别在 ES5 和 ES6 中将伪数组转换成真正的数组 . 什么是伪数 ...

  6. chrome 请停用以开发者

    链接:https://pan.baidu.com/s/1YhWINGlUVyTE5XyBVIGW_Q 提取码:23t2 转载至   https://www.cnblogs.com/it-tsz/p/9 ...

  7. 【otter搭建】在Linux下搭建阿里开源otter数据同步平台

    一,准备安装包和配置文件 JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html Zookeeper:https ...

  8. NOI1994 删数问题

    [问题描述]键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小. 输入 两行第 ...

  9. 7种实现web实时消息推送的方案

    做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里我帮他整理了一下几种方案,并简单做了实现. 什么是消息推送(pus ...

  10. 5 RDD编程

    一.词频统计 1.读文本文件生成RDD lines 2.将一行一行的文本分割成单词 words flatmap() 3.全部转换为小写 lower() 4.去掉长度小于3的单词 filter() 5. ...