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