update
This commit is contained in:
parent
5de2ef354f
commit
cdc9464526
63
src/B4016/B4016.cpp
Normal file
63
src/B4016/B4016.cpp
Normal file
@ -0,0 +1,63 @@
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <queue>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
using ll = int64_t;
|
||||
|
||||
int main(){
|
||||
std::iostream::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);
|
||||
|
||||
const ll max_n = 1e5+5;
|
||||
ll n;
|
||||
std::cin>>n;
|
||||
auto *edge = new std::vector<ll>[max_n];
|
||||
ll a, b;
|
||||
for(ll i{1}; i<n; i++){
|
||||
std::cin>>a>>b;
|
||||
edge[a].push_back(b);
|
||||
edge[b].push_back(a);
|
||||
}
|
||||
std::queue<std::pair<ll, ll>> q;
|
||||
q.emplace(0, a);
|
||||
std::bitset<max_n> vis;
|
||||
vis[a]=true;
|
||||
ll max_a{}, max{};
|
||||
while(!q.empty()){
|
||||
auto top = q.front();
|
||||
q.pop();
|
||||
if(top.first > max){
|
||||
max = top.first;
|
||||
max_a = top.second;
|
||||
}
|
||||
for(auto &i:edge[top.second]){
|
||||
if(vis[i]){
|
||||
continue;
|
||||
}
|
||||
q.push({top.first + 1, i});
|
||||
vis[i] = true;
|
||||
}
|
||||
}
|
||||
q = std::queue<std::pair<ll, ll>>();
|
||||
q.emplace(0, max_a);
|
||||
vis.reset();
|
||||
vis[max_a]=true;
|
||||
ll ans{};
|
||||
while(!q.empty()){
|
||||
auto top = q.front();
|
||||
q.pop();
|
||||
ans = std::max(ans, top.first);
|
||||
for(auto i: edge[top.second]){
|
||||
if(vis[i]){
|
||||
continue;
|
||||
}
|
||||
q.push({top.first+1, i});
|
||||
vis[i] = true;
|
||||
}
|
||||
}
|
||||
std::cout<<ans<<'\n';
|
||||
}
|
Loading…
Reference in New Issue
Block a user