Pagini recente » Cod sursa (job #722096) | Cod sursa (job #2577878) | Istoria paginii runda/denisilie94 | Cod sursa (job #1843115) | Cod sursa (job #1466717)
#include <fstream>
#include <bitset>
#include <queue>
#include <vector>
using namespace std;
ofstream fout("darb.out");
ifstream fin("darb.in");
const int NMAX = 100005;
int n, Max1, Max2;
int Niv[NMAX];
bitset<NMAX> Viz;
vector<int> Graf[NMAX];
queue<int> Q;
void bfs(int first)
{
Viz[first] = true;
Q.push(first);
Niv[first] = 1;
while(!Q.empty()) {
int nod = Q.front();
Q.pop();
for(auto x : Graf[nod]) {
if(!Viz[x]) {
Q.push(x);
Viz[x] = true;
Niv[x] = Niv[nod] + 1;
if(Niv[x] >= Max1) {
Max2 = Max1;
Max1 = Niv[x];
}
}
}
}
}
int main()
{
fin >> n;
for(int i=1, x, y; i<=n; i++) {
fin >> x >> y;
Graf[x].push_back(y);
Graf[y].push_back(x);
}
bfs(1);
fout << Max1 + Max2 - 1 << '\n';
return 0;
}