zoukankan      html  css  js  c++  java
  • hdu 4705 Y(树形DP)

    题目链接:hdu 4705 Y

    题意:

    给你一棵n个节点的树,问你不在同一条路径上的三点对的对数。

    题解:

    n个节点任选三个点Cn,然后我们可以dp出在同一条路径上的三点对,然后减一减

     1 #include<cstdio>
     2 #pragma comment(linker, "/STACK:16777216")
     3 #define F(i,a,b) for(int i=a;i<=b;i++)
     4 using namespace std;
     5 typedef long long ll;
     6 
     7 const int N=1e5+7;
     8 int n,g[N],v[2*N],nxt[N*2],ed,x,y,sz[N];
     9 ll ans;
    10 
    11 void adg(int x,int y){v[++ed]=y,nxt[ed]=g[x],g[x]=ed;}
    12 
    13 void dfs(int x,int fa)
    14 {
    15     sz[x]=1;
    16     for(int i=g[x];i;i=nxt[i])
    17         if(v[i]!=fa)dfs(v[i],x),sz[x]+=sz[v[i]];
    18 }
    19 
    20 void dfs2(int x,int fa)
    21 {
    22     for(int i=g[x];i;i=nxt[i])
    23         if(v[i]!=fa)ans+=1ll*sz[v[i]]*(sz[x]-1-sz[v[i]]);
    24 }
    25 
    26 int main()
    27 {
    28     while(~scanf("%d",&n))
    29     {
    30         ed=0;
    31         F(i,1,n)g[i]=0;
    32         F(i,1,n-1)scanf("%d%d",&x,&y),adg(x,y),adg(y,x);
    33         ans=0,dfs(1,0),dfs2(1,0);
    34         printf("%lld
    ",1ll*n*(n-1)*(n-2)/6-ans/2);
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    burpsuite 不能抓取其他虚拟机环回地址
    Widows搭建sqli-labs
    Mysql内置函数
    MySQL用户创建于授权
    SQL注入
    XSS/CSRF/SSRF/XXE
    Cookie与Session的区别
    HACKTHEBOX邀请码
    kali安装jdk
    java -D
  • 原文地址:https://www.cnblogs.com/bin-gege/p/6479368.html
Copyright © 2011-2022 走看看