Pagini recente » Borderou de evaluare (job #3361975) | Borderou de evaluare (job #3361976) | Borderou de evaluare (job #3361970) | Borderou de evaluare (job #3361993) | Cod sursa (job #3364492)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
using namespace std;
ifstream cin ("darb.in");
ofstream cout ("darb.out");
struct Nod
{
int nod, nivel;
};
int n, a, b;
vector <int> adj[100005];
queue <Nod> q;
bitset<100005> viz;
int rez, fin;
void bfs(int root)
{
q.push({root, 0});
viz[root] = 1;
while(!q.empty())
{
Nod curent = q.front();
rez = curent.nod;
fin = curent.nivel;
q.pop();
int niv = curent.nivel + 1;
for (const auto& x : adj[curent.nod])
{
if (viz[x] == 0) q.push({x, niv});
viz[x] = 1;
}
}
}
int main()
{
cin >> n;
for (int i = 1; i < n; i++)
{
cin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
bfs(1);
viz = 0;
bfs(rez);
cout << fin + 1;
return 0;
}