<span>HDU3107 Godfather(树的重心)</span>

题意:

给你一棵树,求树的所有重心并按字典序输出

思路:

树形dp找一遍,把重心记到一个数组里,最后sort一下

这个题用vector居然超时。。。。。。

这让习惯用vector的人瞬间感觉就不好了。。

/* ***********************************************
Author        :devil
************************************************ */
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
const int N=5e4+10;
int n,sum[N],ans[N],p,l;
bool vis[N];
int head[N],r;
struct wq
{
    int v,next;
}eg[N<<1];
void add(int u,int v)
{
    eg[r].v=v;
    eg[r].next=head[u];
    head[u]=r++;
}
void dfs(int u)
{
    int ma=0;
    sum[u]=0;
    vis[u]=1;
    for(int i=head[u];~i;i=eg[i].next)
    {
        int v=eg[i].v;
        if(vis[v]) continue;
        dfs(v);
        sum[u]+=sum[v]+1;
        ma=max(ma,sum[v]+1);
    }
    ma=max(ma,n-sum[u]-1);
    if(ma<p)
    {
        p=ma;
        l=0;
        ans[l++]=u;
    }
    else if(ma==p) ans[l++]=u;
}
int main()
{
    //freopen("in.txt","r",stdin);
    int x,y;
    while(~scanf("%d",&n))
    {
        l=0;
        r=0;
        p=inf;
        memset(vis,0,sizeof(vis));
        memset(head,-1,sizeof(head));
        for(int i=1;i<n;i++)
        {
            scanf("%d%d",&x,&y);
            add(x,y);
            add(y,x);
        }
        dfs(1);
        sort(ans,ans+l);
        for(int i=0;i<l;i++)
            printf("%d%c",ans[i],i==l-1?'\n':' ');
    }
    return 0;
}

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 14:46
和女友两个人马上毕业,现在我在鹅实习995,周六日偶尔也去北京;她在北京金融007,经常忙到后半夜,周末也没啥休息机会两个人现在都不咋聊天了,一句话隔半小时甚至半天才回。&nbsp;她是个很优秀的妹子,工作也很努力,是值得学习一辈子的人。我在努力工作求转正,即便不行至少赚到了一段不错的实习经历。已经异地了半年,接下来可能还会持续是这个状态。我们都算是对方重要的人,只是感觉看上去不是很有未来的样子。希望牛友们给点的鼓励
梦旅奇缘:很难。异地首先就已经很难了,加上妹子是金融行业,忙碌高压,对情感需求很高,而且见惯纸醉金迷,你的很多优势在她那里可能就不算什么了。这种情况下,在她们那里遇到一个能及时照顾她的人,即使那人可能很多条件不如你,你也有可能被分手。 说白了,两个卷王就不太适合在一起。因为卷王最大的优势,在另一个卷王那里就不算优势了。
点赞 评论 收藏
分享
05-25 10:45
门头沟学院 Java
Frank_zhang:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务