1 条题解

  • 0
    @ 2025-9-10 8:49:47

    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
    上传者