TIOJ[1152] 1.銀河帝國旅行社
題目連結: https://tioj.ck.tp.edu.tw/problems/1152 "樹直徑"定義:一顆樹上任兩點距離最大 這是一題裸裸的樹直徑題,不難發現dfs一次找到最遠點,再用那個點當作第二次dfs的根,再找一次最遠點,不外乎就是樹直徑(很greedy的想法(?)。 PS:我的code超爛,ranklist超後面QAQ #pragma GCC optimize("O2") #include<bits/stdc++.h> #define jizz ios_base::sync_with_stdio(false),cin.tie(NULL) #define int long long int #define pb push_back #define po pop_back #define F first #define S second #define CN cout<<"\n" #define MAXN 1000005 #define lson int lson=index*2 #define rson int rson=index*2+1 #define mid int mid=(l+r)/2 using namespace std; vector < int > v[ 10005 ]; int vis[ 10005 ],ans_p = 0 ,ans_s = 0 ,root; void init( int n) { fill(vis,vis + n, 0 ); } void dfs( int now, int sum) { for ( auto x : v[now]) { if (vis[x] == 0 ) { vis[x] = 1 ; dfs(x,sum + 1 ); } } if (sum > ans_s) { ans_p = now; ans_s = sum; ...