BZOJ 1131 POI2008 Sta 树形DP

题目大意:给定一棵树,求一个点,,使以这个点为根时深度之和最大,在此基础上要求编号最小

裸TreeDP。。。

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define M 1001001using namespace std;struct abcd{int to,next;}table[M<<1];int head[M],tot;int n,ans,size[M];long long sum[M],max_ans=0;void Add(int x,int y){table[++tot].to=y;table[tot].next=head[x];head[x]=tot;}void DFS(int x,int from){int i;sum[x]=size[x]=1;for(i=head[x];i;i=table[i].next)if(table[i].to!=from){DFS(table[i].to,x);size[x]+=size[table[i].to];sum[x]+=sum[table[i].to]+size[table[i].to];}}void Tree_DP(int x,int from){int i;for(i=head[x];i;i=table[i].next)if(table[i].to!=from){sum[table[i].to]=sum[x]+size[1]-2*size[table[i].to];Tree_DP(table[i].to,x);}}int main(){int i,x,y;cin>>n;for(i=1;i<n;i++){scanf("%d%d",&x,&y);Add(x,y);Add(y,x);}DFS(1,0);Tree_DP(1,0);for(i=1;i<=n;i++)if(sum[i]>max_ans)max_ans=sum[i],ans=i;cout<<ans<<endl;return 0;}

好好的管教你自己,不要管别人。

BZOJ 1131 POI2008 Sta 树形DP

相关文章:

你感兴趣的文章:

标签云: