tjut 4705

来源:互联网 发布:天津总医院挂号软件 编辑:程序博客网 时间:2024/06/16 06:50
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define MAXN 100100#pragma comment(linker, "/STACK:16777216")struct Edge{    int v,next;}edge[MAXN*4];int NE;long long n;int head[MAXN];void Insert(int u,int v){    edge[NE].v=v;    edge[NE].next=head[u];    head[u]=NE++;}bool mark[MAXN];long long sum,ans;int dfs(int u){    mark[u]=true;    int son,tmp=0;    for(int i=head[u];i!=-1;i=edge[i].next){        int v=edge[i].v;        if(mark[v])continue;        son=dfs(v);//当前分支儿子的个数        tmp+=son;//已经求出的儿子的个数        ans+=(long long )(n-1-tmp)*son;    }    return tmp+1;}int main(){    int u,v;    while(~scanf("%I64d",&n)){        NE=0;        memset(head,-1,sizeof(head));        for(int i=1;i<n;i++){            scanf("%d%d",&u,&v);            Insert(u,v);            Insert(v,u);        }        memset(mark,false,sizeof(mark));        ans=0;        dfs(1);        sum=n*(n-1)*(n-2)/6;        printf("%I64d\n",sum-ans);    }    return 0;}

0 0
原创粉丝点击