设为首页 加入收藏

TOP

poj1985 Cow Marathon --- 树的直径
2015-07-24 05:38:43 来源: 作者: 【 】 浏览:5
Tags:poj1985 Cow Marathon --- 直径

树的直径即树中最长的路径的长度。

用两次dfs,第一次从任意点出发求得一个最远点p,

第二次从p出发求得最远点,这条路径就是最长路,即所求。


#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #define inf 0x3f3f3f3f #define eps 1e-6 #define ll __int64 using namespace std; struct node { int v,w,next; }e[80010]; int n,m,ans,p,h,head[40010],vis[40010]; void addedge(int a,int b ,int c) { e[h].v=b; e[h].w=c; e[h].next=head[a]; head[a]=h++; } void init() { memset(head,-1,sizeof head); h=0; } void dfs(int x,int num) { vis[x]=1; if(num>ans) ans=num,p=x; for(int i=head[x];i!=-1;i=e[i].next) { if(!vis[e[i].v]) dfs(e[i].v,num+e[i].w); } } int main() { int a,b,c; char s[10]; while(~scanf("%d%d",&n,&m)) { init(); while(m--) { scanf("%d%d%d%s",&a,&b,&c,s); addedge(a,b,c); addedge(b,a,c); } ans=0; memset(vis,0,sizeof vis); dfs(1,0); memset(vis,0,sizeof vis); dfs(p,0); printf("%d\n",ans); } return 0; } 
         
        
       
      
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 1265:Area 下一篇POJ-3134-Power Calculus(迭代加..

评论

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