tjut 3534

原创 2016年08月31日 15:55:43
#include<stdio.h>  
#include<string.h>  
const int N=500000;  
const int inf=0x3fffffff;  
int head[N],num,Len[N],ans,node[N],k;  
struct edge  
{  
    int ed,w,next;  
}e[N*2];  
void addedge(int x,int y,int w)  
{  
    e[num].ed=y;e[num].w=w;e[num].next=head[x];head[x]=num++;  
    e[num].ed=x;e[num].w=w;e[num].next=head[y];head[y]=num++;  
}  
void dfs(int u,int fa)  
{  
    int i,v,temp;  
    Len[u]=0;//最长边  
    node[u]=1;//最长边的个数  
    for(i=head[u];i!=-1;i=e[i].next)  
    {  
        v=e[i].ed;  
        if(v==fa)continue;  
        dfs(v,u);  
        temp=Len[v]+e[i].w;  
        if(temp+Len[u]>ans)//最长边经过v  
        {  
            k=node[v]*node[u];  
            ans=temp+Len[u];  
        }  
        else if(temp+Len[u]==ans)  
            k+=node[v]*node[u];  
        if(Len[u]<temp)//更新最长边  
        {  
            Len[u]=temp;  
            node[u]=node[v];  
        }  
        else if(Len[u]==temp)//更新最长边的个数  
            node[u]+=node[v];  
    }  
}  
int main()  
{  
    int n,i,x,y,w;  
    while(scanf("%d",&n)!=-1)  
    {  
        memset(head,-1,sizeof(head));  
        num=0;  
        for(i=1;i<n;i++)  
        {  
            scanf("%d%d%d",&x,&y,&w);  
            addedge(x,y,w);  
        }  
        ans=-inf;k=0;  
        dfs(1,0);  
        printf("%d %d\n",ans,k);  
    }  
    return 0;  
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

tjut 5412

#include using namespace std; const int Maxn=100020; int nq; int ty[Maxn*3],ql[Maxn*3],qr[Maxn*3],qk...

【BZOJ】【P3534】【Sdoi2014】【重建】【题解】【矩阵树定理】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3534

MySQL-5.7.14 net start mysql 服务无法启动-“NET HELPMSG 3534” 奇怪的问题

my.ini 在参考http://blog.csdn.net/i_am_wangbo/article/details/49999407之后 执行mysqld --initialize-inse...
  • Ender__
  • Ender__
  • 2016年12月16日 10:23
  • 1696

HDU 3534 Tree(dfs统计树的直径的数量)

求树的直径用dfs可做,每次返回以当前结点为终点、某个叶子为起点的最长路径长度,同时找最大的两条路径求和更新最优解。 具体分有多条同样长的最长路径、有一条最长路径和一条或多条次长路径、只有一条路径、...

hdu3534,恶心的树形dp,需要考虑的东西太多了

是够恶心的,然而不被恶心几次,代码能力也就练不出来了 /node[x]中记录的是: //x的子节点通过x连接(就是在x的子树内的)的最长路径为max,条数为num, //Max1是x的子节点到x的最长...

BZOJ 3534([Sdoi2014]重建-变元矩阵-树定理-所有生成树的边权积和)

变元矩阵-树定理,求所有生成树边权积的和。把度数改为连出的边权和,A[i][j]=−A[i][j]=-边权,A[i][i]=A[i][i]=连出的边权和.#include using namespa...

hdu 3534 (树形DP)

题意:求出树的最长边和个数。 思路:最长边以前做过,用树形DP可以。求最长边的时候可以统计一下最长边的个数,那么以u为根节点的子树中最长边为:Len[u]+max(len[v]),个数node[u]...

BZOJ 3534 [Sdoi2014]重建

矩阵-树定理 + 概率挂题解呀:http://blog.csdn.net/iamzky/article/details/41317333这道题告诉我们:邻接矩阵中的的权可以不是1,而是其他权值,比如概...

HDU 3534 Tree 树形dp统计

题意:给定n(范围不明确,不过10000可以过)个点的树,问树的直径有多少条。 题解:维护一个子根节点到子树中叶子节点的最长路,次长路和对应的个数,注意路之间不能在同一棵子树内,然后统计每棵子树的直...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tjut 3534
举报原因:
原因补充:

(最多只允许输入30个字)