RT,按照老师的代码打的,结果CS Academy说是Segmentation Fault
,求大佬帮帮忙qaq
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
struct node{
ll to,nxt;
};
ll cnt=1;
vector<node> edge;
vector<ll> dis,vis,head;
template<typename T>
void fillvec(vector<T> &targ,T val,ll len){
targ.clear();
for(ll i=0;i<len;i++)targ.push_back(val);
}
void addedge(ll u,ll v){
cnt+=1;
edge[cnt].to=v;
edge[cnt].nxt=head[u];
head[u]=cnt;
}
void dfs(ll ind){
vis[ind]=1;
for(ll i=head[ind];i!=0;i=edge[i].nxt){
if(not vis[edge[i].to]){
dis[edge[i].to]=dis[ind]+1;
dfs(edge[i].to);
}
}
}
void init(){
fillvec<ll>(dis,0,100001);
fillvec<ll>(vis,0,100001);
fillvec<ll>(head,-1,100001);
}
ll n;
ll work(){
init();
cin>>n;
for(ll i=0;i<n-1;i++){
ll x,y;
cin>>x>>y;
addedge(x,y);
addedge(y,x);
}
dis[1]=1;
dfs(1);
static ll pos=1;
for(ll i=1;i<=n;i++){
if(dis[i]>dis[pos])pos=i;
}
fillvec<ll>(dis,0,100001);
dis[pos]=1;
dfs(pos);
ll ans=-2147483648;
for(ll i=1;i<=n;i++)ans=max(ans,dis[i]);
return ans;
}
int main(){
cout<<work();
return 0;
}