设为首页 加入收藏

TOP

zoj 3820 Building Fire Stations The 2014 ACM-ICPC Asia Mudanjiang Regional Contest B题 树的直径
2015-07-20 17:19:38 来源: 作者: 【 】 浏览:3
Tags:zoj 3820 Building Fire Stations The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 直径

题意:n个点的树,给出n-1条边,每条边长都是1,两个点建立防火站,使得其他点到防火站的最远距离最短。

思路:先求出树的直径,直径上的所有点都存到一个数组里。如果直径是奇数,把中间的那条边删去;如果是偶数,把中间的点,分

到两边的子树。对两个子树分别求树直径的中点即可。详见代码:

/*********************************************************
  file name: zoj3820.cpp
  author : kereo
  create time:  2015年02月08日 星期日 15时31分32秒
*********************************************************/
#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
        #include
        
          #include
         
           #include
          
            #include
           
             #include
            
              using namespace std; typedef long long ll; const int sigma_size=26; const int N=100+50; const int MAXN=200000+50; const int inf=0x3fffffff; const double eps=1e-8; const int mod=1000000000+7; #define L(x) (x<<1) #define R(x) (x<<1|1) #define PII pair
             
               #define mk(x,y) make_pair((x),(y)) int n,edge_cnt,top; int head[MAXN],vis[MAXN],d[MAXN],fa[MAXN],s[MAXN]; struct Edge{ int v,next; }edge[MAXN<<1]; void init(){ edge_cnt=0; memset(head,-1,sizeof(head)); } void addedge(int u,int v){ edge[edge_cnt].v=v; edge[edge_cnt].next=head[u]; head[u]=edge_cnt++; } int bfs(int st){ int ans=st; queue
              
               Q; Q.push(st); vis[st]=1; d[st]=0; fa[st]=-1; while(!Q.empty()){ int u=Q.front(); Q.pop(); for(int i=head[u];i!=-1;i=edge[i].next){ int v=edge[i].v; if(vis[v]) continue; vis[v]=1; d[v]=d[u]+1; fa[v]=u; if(d[v]>d[ans]) ans=v; Q.push(v); } } top=0; int u=ans; while(u!=-1){ s[top++]=u; u=fa[u]; } return ans; } int main(){ //freopen("in.txt","r",stdin); int T; scanf("%d",&T); while(T--){ init(); scanf("%d",&n); for(int i=1;i
               
                

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Leetcode_Valid Palindrome 下一篇UVA 12563 Jin Ge Jin Qu hao 01..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)