poj1985 Cow Marathon

树的直径裸题

树的直径的一般求法:

任意一点为起点,dfs/bfs找出与它最远的点$u$

以$u$为起点,dfs/bfs找出与它最远的点$v$

则$d(u,v)$是一条直径

下面给出poj1985的code(poj2631自行修改)

#include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
int max(int &a,int &b){return a>b?a:b;}
#define N 50002
int n,m,k,ans,dis[N];
int cnt,hd[N],nxt[N<<1],ed[N],poi[N<<1],val[N<<1];
void adde(int x,int y,int v){nxt[ed[x]]=++cnt; hd[x]=hd[x]?hd[x]:cnt;ed[x]=cnt; poi[cnt]=y; val[cnt]=v;
}
void dfs(int x,int fa){if(dis[x]>dis[k]) k=x;for(int i=hd[x];i;i=nxt[i]){int to=poi[i];if(to==fa) continue;dis[to]=dis[x]+val[i];dfs(to,x);}
}
int main(){char c[3]; int q1,q2,q3;while(~scanf("%d%d",&n,&m)){memset(hd,0,sizeof(hd));memset(ed,0,sizeof(ed));memset(nxt,0,sizeof(nxt));ans=cnt=k=0;for(re int i=1;i<n;++i){scanf("%d%d%d%s",&q1,&q2,&q3,c);adde(q1,q2,q3); adde(q2,q1,q3);}dis[1]=1; dfs(1,0);dis[k]=0; dfs(k,0);for(re int i=1;i<=n;++i) ans=max(ans,dis[i]);printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/kafuuchino/p/9814422.html

poj1985 / poj2631(树的直径)相关推荐

  1. poj1985 Cow Marathon(树的直径#入门)

    poj1985 Cow Marathon(树的直径) Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 9110 Accepted: ...

  2. poj1985和poj1849(树的直径)

    题目传送门:poj1985 树是连通无环图,树上任意两点之间的路径是唯一的.定义树上任 意两点u, v的距离为u到v路径上边权的和.树的直径MN为树上最长路 径,即点M和N是树上距离最远的两个点. 题 ...

  3. 树的直径,树的最长路dp思想

    dp一直弱死了,树型dp很多基本的题都不会,最近在刷树型dp的题,把关于树的最长路的思想总结一下: 树的直径:树中距离最远的两点间的距离. 下面说几道题: hdu 2196:对于树上(双向边)的每一个 ...

  4. 树的直径/重心 学习笔记

    树的直径 POJ2631 Roads in the North 题意:裸的直径 题解:套模板,但是开始的时候,我的代码在第一次dfs循环的时候,没有考虑到,路长全为0的情况,而用来记录最远点的maxp ...

  5. C++剑指offer:[POJ]2631 Roads in the North - 用树形DP的方式求出一棵树的直径

    前言 此题是道很简单的题(做法不单一,不仅只有树形DP的方法) 做完了这道题才发现此题原来是一道求树的直径的题,也就是求树上两个节点的最大距离. 题目 问题 N(2692): [POJ2631]北极地 ...

  6. [51nod] 1766树上的最远点对 树的直径 树剖LCA+ST表静态查询

    题意: 给你一棵带权树,q次查询,每次给出两个区间,[l1,r1][l2,r2][l_1,r_1] [l_2,r_2][l1​,r1​][l2​,r2​]从这两个区间中分别选择两个数字,使得这两个点的 ...

  7. 小A与欧拉路(牛客-树的直径)

    题解: 欧拉路:从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边只通过恰好一次 问你走完这树上所有的点最短路径是什么. 因为树是没有环的,所以你走到叶子结点的时候需要往回走,也就是再走一 ...

  8. luogu P4408 [NOI2003]逃学的小孩(树的直径)

    整理的算法模板合集: ACM模板 看了半天的题原来没有告诉你三个点的坐标,不然直接跑最短路即可.要求最长的时间,所以我们要自己找到三个点,而在树中最长的路径也就是树的直径.那么本题就可以简化为:在一棵 ...

  9. 模板 - 树上问题(树的直径、动态查询树的直径、树的重心)

    整理的算法模板合集: ACM模板 目录 一.树的直径 树形DP 两次DFS / BFS(找到直径的两个端点) 二.动态修改树的边权并求每个时刻的直径(线段树) 三.树的重心 一.树的直径 树的直径满足 ...

最新文章

  1. Pandas处理时序数据(初学者必会)!
  2. python将pandas dataframe内容写入ElasticSearch实战
  3. $portfolio.isotope is not a function
  4. LeetCode 52. N-Queens II
  5. Angular本地数据存储LocalStorage
  6. 『操作系统』 进程的描述与控制 Part4 线程
  7. RabbitMQ的深入理解和最简单的用途说明
  8. 受疫情影响 MWC 2020正式取消
  9. zw版【转发·台湾nvp系列例程】HALCON MirrorRegion (Delphi)
  10. 基于 Flink 的典型 ETL 场景实现方案
  11. 基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder
  12. 弱电工程师和网络工程师有什么区别?工作内容是什么?
  13. Nintendo Switch 解砖指引(翻译)
  14. PAT.1143 Lowest Common Ancestor
  15. 【问题解决方法】每次关闭XAMPP都会出现报错:Error:Cannot create file ‘E:\XAMPP\xampp-control.ini’
  16. 拓扑排序(topo_sort)
  17. 关于我使用校园网电脑被限速成10M宽带的悲惨教训
  18. 嵌入式电路中的BUCK VS LDO【转】
  19. 【云原生 | 01】docker容器引擎
  20. win11使用win10右键菜单的方法

热门文章

  1. 在tinyalsa上抓取音频
  2. java controller 继承_java – Spring RestController中的继承
  3. 魔众一物一码溯源防伪系统 v1.3.0 产品信息块增强 物流码批量导出
  4. C#检测U盘是否插入
  5. 应用概率统计(陈魁)第八章部分课后答案
  6. Spring Data Lovelace 正式发布
  7. 某地110KV水电站电气一次及发电机保护设计
  8. 在华为OD的程序员经验分享
  9. 用Python编一个街机拳皇游戏,操作起来!
  10. python 使用turtle 画樱花(python3验证ok)