• ZROI2018提高day5t2


    传送门

    分析

    考场上傻了,写了个树剖还莫名weila......

    实际就是按顺序考虑每个点,然后从他往上找,一边走一边将走过的边染色,如果走到以前染过色的边就停下。对于每一个a[i]的答案就是之前走过的所有边的数量*2-它自己的深度。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    int col[100100],sum,fa[100100],dep[100100];
    vector<int>v[100100];
    inline void dfs(int x){
          for(int i=0;i<v[x].size();i++)
            if(v[x][i]!=fa[x]){
              fa[v[x][i]]=x;
              dep[v[x][i]]=dep[x]+1;
              dfs(v[x][i]);
            }
          return;
    }
    int main(){
          int n,m,i,j,k;
          scanf("%d%d",&n,&m);
          for(i=1;i<n;i++){
              int x,y;
              scanf("%d%d",&x,&y);
              v[x].push_back(y);
              v[y].push_back(x);
          }
          fa[1]=0;
          dep[1]=0;
          dfs(1);
          col[1]=1;
          for(i=1;i<=m;i++){
              int x,y;
              scanf("%d",&x);
              y=x;
              while(!col[y]){
                col[y]=1;
                sum++;
                y=fa[y];
              }
              printf("%d
    ",sum*2-dep[x]);
          }
          return 0;
    }
  • 相关阅读:
    中序遍历
    二叉树前序遍历
    A Real Stewart
    走遍美国 听写
    2016-12-12——2016-12-16友邻
    英语百日听力
    6.2分鱼问题两种解法
    Bootstrap组件1
    Bootstrap图标及另一个好用图标网站介绍
    Bootstrap全局CSS样式之图片
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9699170.html
Copyright © 2020-2023  润新知