zoukankan      html  css  js  c++  java
  • HDU2586(tarjanLCA板子)

     1 const int maxn = 4e4 + 5;
     2 int T, n, m;
     3 int f[maxn], vis[maxn], dis[maxn], ans[maxn];
     4 vector<P> vc[maxn];
     5 vector<int> query[maxn], id[maxn];
     6 
     7 inline int getf(int v) { return v == f[v] ? v : f[v] = getf(f[v]); }
     8 
     9 inline void Tarjan(int cur) {
    10     vis[cur] = 1;
    11 
    12     for (auto son : vc[cur]) {
    13         if (vis[son.first])    continue;
    14 
    15         dis[son.first] = dis[cur] + son.second;
    16         Tarjan(son.first);
    17         f[son.first] = cur;
    18     }
    19 
    20     vis[cur] = 2;
    21 
    22     for (int i = 0; i < query[cur].size(); i++) {
    23         int v = query[cur][i], t = id[cur][i];
    24 
    25         if (vis[v] == 2) {
    26             int lca = getf(v);
    27             ans[t] = dis[cur] + dis[v] - 2 * dis[lca];
    28         }
    29     }
    30 }
    31 
    32 int main() {
    33     for (read(T); T; T--) {
    34         read(n), read(m);
    35 
    36         rep(i, 1, n) {
    37             vc[i].clear(), query[i].clear(), id[i].clear();
    38             f[i] = i, vis[i] = 0;
    39         }
    40 
    41         rep(i, 1, n - 1) {
    42             int u, v, cost;
    43             read(u), read(v), read(cost);
    44             vc[u].push_back({v, cost});
    45             vc[v].push_back({u, cost});
    46         }
    47 
    48         auto Add_Query = [](int u, int v, int i) {
    49             query[u].push_back(v);
    50             id[u].push_back(i);
    51         };
    52 
    53         rep(i, 1, m) {
    54             int u, v;
    55             read(u), read(v);
    56             Add_Query(u, v, i);
    57             if(u != v)    Add_Query(v, u, i);
    58         }
    59 
    60         Tarjan(1);
    61 
    62         rep(i, 1, m)
    63             writeln(ans[i]);
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    2016年第9本:系统之美
    2016年第8本:不可思议的心理控制实验
    2016年第7本:非暴力沟通
    用SDWebImage渐变加载图片
    iOS相册、相机、通讯录权限获取
    屏蔽iOS10模拟器海量的垃圾debug信息
    Swift
    Swift
    PlaceholderImageView
    Swift
  • 原文地址:https://www.cnblogs.com/AlphaWA/p/10633048.html
Copyright © 2011-2022 走看看