zoukankan      html  css  js  c++  java
  • codeforces 979C Kuro and Walking Route

    题意;

    给出一棵树,其中有两个点,x和y,限制走了x之后的路径上不能有y,问可以走的路径(u,v)有多少条,(u,v)和(v,u)考虑为两条不同的路径。

    思路:

    简单树形dp,dfs统计在x到y路径(不包括x和y)之外的所有点,在x这边的有a个,y这边的有b个,那么答案就是n*(n-1) - a * b。

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 #include <vector>
     5 using namespace std;
     6 const int N = 3e5 + 10;
     7 vector<int> g[N];
     8 int num[N];
     9 int par[N];
    10 int n,x,y;
    11 int dfs(int u,int fa)
    12 {
    13     par[u] = fa;
    14     int cnt = 0;
    15     for (int v:g[u])
    16     {
    17         if (v != fa)
    18         {
    19             cnt += dfs(v,u);
    20         }
    21     }
    22     return num[u] = cnt + 1;
    23 }
    24 int main()
    25 {
    26     scanf("%d%d%d",&n,&x,&y);
    27     for (int i = 1;i < n;i++)
    28     {
    29         int u,v;
    30         scanf("%d%d",&u,&v);
    31         g[u].push_back(v);
    32         g[v].push_back(u);
    33     }
    34     dfs(x,-1);
    35     long long ans = 0;
    36     int m = y;
    37     while (par[m] != x)
    38     {
    39         m = par[m];
    40     }
    41     //printf("%d*
    ",m);
    42     ans = (long long) n * (n - 1);
    43     ans -= (long long)num[y] * (1LL * (n - num[m]));
    44     printf("%lld
    ",ans);
    45     return 0;
    46 }
  • 相关阅读:
    react-redux
    Vue中常用的UI框架
    vue中router与route的区别
    H5新增input属性
    H5新增的input类型
    菜鸡对作用域链的理解
    自己对路由的一些理解
    浏览器缓存
    黄瓜的不定期更新面试题
    ajax封装
  • 原文地址:https://www.cnblogs.com/kickit/p/9038994.html
Copyright © 2011-2022 走看看