https://zerojudge.twShowProblem?problemid=b967
如果加了斜線部分,就會TLE,所以我把感覺不必要的刪掉,結果就WA,請問為什麼這些不能刪掉?還要怎麼做才可以又快又好?
#include<iostream>
#include<queue>
#include<algorithm>
#include<cmath>
#include<vector>
#include<utility>
#include<tuple>
#include<set>
#include<string>
#include<stack>
#include<bitset>
#define int long long
#define N 100002
#define F first
#define S second
#define fastio ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define mod 10000007
using namespace std;
vector<int> edge[N];
//bool visited[N];
int maxdep;
int dfs(int a,int d){
//visited[a]=1;
pair<int,int> dep = {d,d};
for(int c:edge[a]){
//if(visited[c]) continue;
int temp=dfs(c,d+1);
if(temp > dep.F){
dep.S=dep.F;
dep.F=temp;
}
else if(temp>dep.S){
dep.S=temp;
}
}
maxdep=max(maxdep,dep.F+dep.S-2*d);
//cout << maxdep;
return dep.F;
}
signed main(){
fastio
int n;
while(cin >> n){
for(int i=1,u,v;i<n;i++){
cin >> u >> v;
edge[u].push_back(v);
//edge[v].push_back(u);
}
dfs(0,0);
cout << maxdep << '\n';
for(int i=0;i<n;i++){
edge[i].clear();
}
//fill(visited,visited+n+1,0);
maxdep=0;
}
}


