TYVJ 4865 天天和树tree || 清北学堂金秋杯大奖赛
2017-09-20 17:16
316 查看
题目描述:
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define MAXN 110000 inline void read(int &x){ x=0; int f=1; char c=getchar(); while(c>'9'||c<'0'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=x*10+c-'0'; c=getchar(); } x*=f; } struct Edge{ int to,next; }e[MAXN<<1]; int head[MAXN],fa[MAXN],dep[MAXN],pos,Max,num,n,tot; bool vis[MAXN]; void dfs1(int u){ for(int i=head[u];i;i=e[i].next){ int v=e[i].to; if(fa[u]==v) continue; dep[v]=dep[u]+1,fa[v]=u; if(dep[v]>Max) Max=dep[v],pos=v; dfs1(v); } } inline void Add_Edge(int u,int v){ e[++tot].to=v,e[tot].next=head[u],head[u]=tot; } bool dfs2(int u){ if(u==pos){ vis[u]=true;dep[u]=0;return vis[u]; } bool flag=false; for(int i=head[u];i;i=e[i].next){ int v=e[i].to; if(v==fa[u]) continue; fa[v]=u; if(dfs2(v)==true) flag=true; } if(flag) dep[u]=0,vis[u]=true; return flag; } void dfs3(int u){ for(int i=head[u];i;i=e[i].next){ int v=e[i].to; if(v==fa[u]) continue; fa[v]=u; if(vis[v]) dep[v]=0; else dep[v]=dep[u]+1; Max=max(Max,dep[v]);dfs3(v); } } int main(){ read(n); for(int u,v,i=1;i<n;++i){ read(u),read(v); Add_Edge(u,v),Add_Edge(v,u); } dep[1]=1,fa[1]=0,Max=-1; dfs1(1); memset(dep,0,sizeof dep );memset(fa,0,sizeof fa ); int pp=pos; dfs1(pp); bool tmp=dfs2(pp); memset(fa,0,sizeof fa ); Max=-1; dfs3(pos); printf("%d",Max); return 0; }
路径就是树的直径
相关文章推荐
- TYVJ 4869 罪犯分组 || 清北学堂金秋杯大奖赛
- TYVJ 4865 天天和树 树的直径
- TYVJ 4864 天天去哪吃 || 清北学堂金秋杯大奖赛
- 天天和树 tree
- 清北学堂-D6-T2-tree
- 3224: Tyvj 1728 普通平衡树(finger tree)
- 清北学堂-D3-T1-tree
- 天天写算法之It is a tree?
- tyvj 2017大奖赛 T3 stall(摆摊)
- 初学 Size Balanced Tree(bzoj3224 tyvj1728 普通平衡树)
- 清北学堂 金秋杯联赛模拟赛第二轮day1
- FLEX中Tree默认展开所有节点
- java 遍历目录,操作文件 tree命令
- Lowest Common Ancestor of a Binary Tree
- Count Complete Tree Nodes***
- PAT-Complete Binary Search Tree (30)
- Full Binary Tree Picture hiho一下第 177 周
- Leetcode Binary Tree Paths
- HDU5293:Tree chain problem(树形dp & LCA)