POJ 1985 Cow Marathon 树的直径
来源:互联网 发布:mac默认打开方式设置 编辑:程序博客网 时间:2024/06/05 11:06
链接:http://poj.org/problem?id=1985
题意:题目阐述不是很清楚,是一棵严格树,不存在环,求其中两点间距离最长一处。
思路:两点间距离最长即为树的直径。易得,从任意点开始DFS找到距离最长一点一定是距离最长两点之一,再从找到的点再DFS一次就可以找到数的直径。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<map>#include<queue>#include<stack>#include<vector>#include<ctype.h>#include<algorithm>#include<string>#define PI acos(-1.0)#define maxn 50005#define maxm 100005#define INF 1<<25#define MAX 0x7ffffffftypedef long long ll;using namespace std;struct Edge{ int v,w; int next;}edge[maxm];int tot,tt;int point[maxn];int vv[maxn],dis[maxn];int top=1,d;int init(){ top=1; memset(edge,0,sizeof(edge)); memset(point,0,sizeof(point)); memset(vv,0,sizeof(vv)); memset(dis,0,sizeof(dis)); d=0;}int add_edge(int u,int v,int w){ edge[top].v=v; edge[top].w=w; edge[top].next=point[u]; point[u]=top++; edge[top].v=u; edge[top].w=w; edge[top].next=point[v]; point[v]=top++; return 0;}int dfs(int x){ vv[x]=1; for(int i=point[x];i!=0;i=edge[i].next) { if(!vv[edge[i].v]) { d+=edge[i].w; dis[edge[i].v]=d; dfs(edge[i].v); d-=edge[i].w; } }}int main(){ scanf("%d%d",&tot,&tt); init(); for(int i=0;i<tt;i++) { int x,y,z; char ss[3]; scanf("%d%d%d%s",&x,&y,&z,ss); add_edge(x,y,z); } dfs(1); int aa=0,bb; for(int i=1;i<=tot;i++) { if(dis[i]>aa) { bb=i; aa=dis[i]; } } memset(dis,0,sizeof(dis)); memset(vv,0,sizeof(vv)); dfs(bb); aa=0; d=0; for(int i=1;i<=tot;i++) { if(dis[i]>aa) { bb=i; aa=dis[i]; } } printf("%d\n",aa);}
0 0
- POJ 1985 Cow Marathon 树的直径
- POJ 1985 Cow Marathon 树的直径
- 【树的直径】 POJ 1985 Cow Marathon
- poj 1985 Cow Marathon 【树的直径】
- POJ 1985 Cow Marathon(树的直径)
- poj 1985 Cow Marathon 【树的直径】
- poj-1985-Cow Marathon【树的直径】
- poj 1985 Cow Marathon 树的直径
- Poj 1985 Cow Marathon ( 树的直径
- [POJ 1985][树的直径]Cow Marathon
- poj 1985 Cow Marathon(树直径)
- [poj 1985]Cow Marathon[求树的直径][BFS]
- [POJ 1985] Cow Marathon (树的直径)
- BZOJ 3363 POJ 1985 Cow Marathon 树的直径
- POJ 1985--Cow Marathon【树的直径 && 模板】
- POJ 1985 Cow Marathon(求树的直径)
- POJ 1985 Cow Marathon(树的直径)
- poj--1985--Cow Marathon(树的直径)
- uva——11995——I Can Guess the Data Structure!
- 微软
- NUnit单元测试
- 备忘录模式(Memento Pattern)
- 我不知道我的选择对不对,但我决定坚持——发发牢骚
- POJ 1985 Cow Marathon 树的直径
- XML内容中有单引号和双引号的解决
- 【CTSC 2008】 网络管理 --树链剖分+树状数组+Trie树
- Google账户二次验证取消
- 痛苦的版本对齐(外篇) 是否能够避免版本对齐
- 写在2014
- SYS and SYSTEM Users
- SICP 习题 (1.28)解题总结
- 【js组件】修改cityselect已适应项目