一直CE,不懂为啥呀
查看原帖
一直CE,不懂为啥呀
251466
wwldx楼主2020/8/8 23:05

如题,这是代码

#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
typedef vector<int> VI;
const ll mod=1000000007;
const int maxn=2e5+10;
const int inf=0x3f3f3f3f;
ll gcd(ll a,ll b) {
	return b?gcd(b,a%b):a;
}
#define ms(a) memset(a,0,sizeof(a))
#define mss(a) memset(a,-1,sizeof(a))
#define msi(a) memset(a,inf,sizeof(a))
#define iossync ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
struct node{
	int to,next;
}edge[maxn<<1];
int head[maxn];
int n,x,y;
int cnt;
void addedge(int x,int y)
{
	edge[++cnt].to=y;
	edge[cnt].next=head[x];
	head[x]=cnt;
}
P dfs(int now,int deep,int fa)
{
	int ans=deep;
	int dis=now;
	for(int i=head[now];i;i=edge[i].next)
	{
		int d=edge[i].to;
		if(d==fa)
		continue;
//		ans=max(dfs(d,deep+1,now),ans);
		P qwe=dfs(d,deep+1,now);
		if(qwe.first>ans)
		{
			ans=qwe.first;
			dis=qwe.second;
		}
	}
	return {ans,dis};
}
int main()
{
	cin>>n;
	rep(i,0,n-1)
	{
		cin>>x>>y;
		addedge(x,y);
		addedge(y,x);
	}
	int u,v;
	int d1,d2;
//	v=dfs()
	P ans=dfs(1,1,0);
	u=ans.second;
	d1=ans.first;
	ans=dfs(u,1,0);
	v=ans.second;
	d2=ans.first;
	cout<<d2-1<<"\n";
	return 0;
}
2020/8/8 23:05
加载中...