1 条题解
-
0
C++ :
#include<iostream> #include<cstdio> using namespace std; int n,m,f[300010]; int pr; struct u { int b; int x; }c[300000*2+100]; int h[300000+10],l; bool b[300010]; inline void g(int a,int p) { b[a]=1; int zd=0,ed=0,ez=0,zzd=f[p]; for(int i=h[a];i!=0;i=c[i].x) { int u=c[i].b; if(p==u) continue; ez++; if(!b[u]) g(u,a); if(f[u]>ed) ed=f[u]; if(f[u]>=zd) { ed=zd; zd=f[u]; } } f[a]=zd+ez; if(f[a]==0) f[a]++; if(f[a]>pr) pr=f[a]; if(zzd>ed) ed=zd; if(zzd>=zd) { ed=zd; zd=zzd; } int o=0; if(a==1) o=-1; if(zd+ed+ez+o>pr) { pr=zd+ed+ez+o; } } inline void gj(int a,int b) { c[++l].b=b; c[l].x=h[a]; h[a]=l; } int main() { //freopen("worma.in","r",stdin); //freopen("worma.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int aa,bb; scanf("%d%d",&aa,&bb); gj(aa,bb); gj(bb,aa); } g(1,0); printf("%d",pr); getchar(); getchar(); }
- 1
信息
- ID
- 3330
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者