Pagini recente » Cod sursa (job #3003867) | Cod sursa (job #2388164) | Cod sursa (job #2736022) | Cod sursa (job #2252385) | Cod sursa (job #2749441)
#include<iostream>
#include<queue>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n, nodmx, lg[100005], distmx, nod1, nod2;
queue<int>q;
vector<int> G[100005];
void adaugare()
{
int nod=q.front();
q.pop();
if(lg[nod]>distmx)
{
distmx=lg[nod];
nodmx=nod;
}
for(auto &nod2:G[nod])
if(!lg[nod2])
{
lg[nod2]=lg[nod]+1;
q.push(nod2);
}
}
void parcurgere(int nod)
{
nodmx=nod;
distmx=1;
lg[nod]=1;
q.push(nod);
while(!q.empty())
adaugare();
}
int main()
{
f>>n;
for(int i=1; i<n; i++)
{
f>>nod1>>nod2;
G[nod1].push_back(nod2);
G[nod2].push_back(nod1);
}
parcurgere(1);
for (int i=1; i<=n; i++)
lg[i]=0;
parcurgere(nodmx);
g<<distmx;
return 0;
}