为什么过不了#1
查看原帖
为什么过不了#1
224111
zysqh楼主2020/6/15 18:04
#include <cstdio>
#include <iostream>
#include <cstring>
#define S 10000005
using namespace std;
int n,m;
struct mmm{
	int ne,to;
}e[S*2];
int h[S],cnt;
void add(int u,int v){
	e[++cnt].ne=h[u];
	e[cnt].to=v;
	h[u]=cnt;
}
int x,y;
int d[S],val[S];
int now,rt;
void dfs(int u,int fa){
	for(int i=h[u];i;i=e[i].ne){
		int v=e[i].to;
		if(v==fa)continue;
		d[v]=d[u]+val[v]-1;
		if(d[v]>now){
			now=d[v];rt=v;
		}
		dfs(v,u);	
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		scanf("%d%d",&x,&y);
		val[x]++;
		val[y]++;
		add(x,y);
		add(y,x);
	}
	d[1]=val[1];
	dfs(1,0);
	memset(d,0,sizeof(d));
	d[rt]=val[rt];
	dfs(rt,0);
	if(n!=1)printf("%d\n",d[rt]+1);
	else cout<<1<<endl;
}
2020/6/15 18:04
加载中...