zoukankan      html  css  js  c++  java
  • 树的直径模板

     1 struct stu
     2 {
     3     int from,to,val,next;
     4 }st[M];                        //定义结构体储存节点和节点间的距离以及下一个节点的位置 
     5 
     6 
     7 void init()
     8 {
     9     num=0;
    10     memset(head,-1,sizeof(head));
    11 }                            //初始化函数 
    12 
    13 
    14 void add_edge(int u,int v,int w)
    15 {
    16     st[num].from=u;                //储存节点u 
    17     st[num].to=v;                //储存节点v 
    18     st[num].val=w;                //储存节点u与v的距离 
    19     st[num].next=head[u];        //储存下一个与节点u相连的节点的位置 
    20     head[u]=num++;                //储存u节点的位置 
    21 }                            
    22 
    23 
    24 void bfs(int fir)                //搜索函数 
    25 {    
    26     ans=0;
    27     int u;
    28     memset(sum,0,sizeof(sum));    //以该节点结尾的最长路 
    29     memset(flag,0,sizeof(flag));//标记被访问的节点 
    30     queue<int>que;
    31     que.push(fir);
    32     flag[fir]=1;
    33     while(!que.empty())
    34     {
    35     
    36         u=que.front();
    37         que.pop();
    38         for(i = head[u] ; i != -1 ; i=st[i].next)
    39         {
    40             if(!flag[st[i].to] && sum[st[i].to] < sum[u]+st[i].val)
    41             {
    42                 sum[st[i].to]=sum[u]+st[i].val;
    43                 if(ans < sum[st[i].to])
    44                 {
    45                     ans=sum[st[i].to];                //记录最大距离 
    46                     node=st[i].to;                    //记录端点 
    47                 }
    48                 flag[st[i].to]=1;
    49                 que.push(st[i].to);
    50             }
    51         }
    52     }
    53 }
    54 
    55 假设从节点1开始,找到节点u使得1到u的距离最大,那么节点u到树上其他节点的最大距离就是树的直径(树上两点间的最大距离) 

    例题链接

    ——将来的你会感谢现在努力的自己。
  • 相关阅读:
    Android的目录结构说明
    IOS-线程(GCD)
    iOS UI-线程(NSThread)及其安全隐患与通信
    iOS UI-自动布局(AutoLayout)
    iOS UI-自动布局(Autoresizing)
    IOS-Core Data的使用
    OC 数据持久化(数据本地化)- 本地存储
    iOS UI-应用管理(使用Cell模板)
    IOS UI-QQ好友列表
    IOS-多线程
  • 原文地址:https://www.cnblogs.com/yexiaozi/p/5730232.html
Copyright © 2011-2022 走看看