设为首页 加入收藏

TOP

Codeforces 14D Two Paths 树的直径
2015-07-24 05:52:03 来源: 作者: 【 】 浏览:4
Tags:Codeforces 14D Two Paths 直径

题目链接:点击打开链接

题意:给定一棵树

找2条点不重复的路径,使得两路径的长度乘积最大

思路:

1、为了保证点不重复,在图中删去一条边,枚举这条删边

2、这样得到了2个树,在各自的树中找最长链,即树的直径,然后相乘即可

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
        #include
        
          #include
         
           #include
          
            #include
           
             #include
            
              using namespace std; #define N 220 struct Edge { int from, to, nex; bool hehe; }edge[N<<1]; int head[N], edgenum; void add(int u, int v){ Edge E={u,v,head[u],true}; edge[edgenum] = E; head[u] = edgenum ++; } int n; int dis[N]; void init(){ memset(head, -1, sizeof head); edgenum = 0; } int bfs(int x){ memset(dis, 0, sizeof dis); dis[x] = 1; queue
             
              q; q.push(x); int hehe = x; while(!q.empty()) { int u = q.front(); q.pop(); for(int i = head[u]; ~i; i = edge[i].nex) { if(!edge[i].hehe)continue; int v = edge[i].to; if(dis[v])continue; dis[v] = dis[u]+1, q.push(v); if(dis[hehe]
              
               

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC++ 创建msi文件 下一篇poj 1085 Triangle War (状压+记..

评论

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