Pagini recente » Cod sursa (job #1346383) | Cod sursa (job #1595200) | Cod sursa (job #2486603) | Cod sursa (job #1387140) | Cod sursa (job #1098640)
#include <fstream>
#include <vector>
#define Nmax 100100
#define Vecin Graph[Nod][i]
using namespace std;
vector <int> Graph[Nmax];
int N, Solution, Dist[Nmax];
void Dfs(int Nod, int Tata) {
int Max1 = 0, Max2 = 0;
for(int i = 0; i < Graph[Nod].size(); i++) {
if(Vecin != Tata)
Dfs(Vecin, Nod);
if(Dist[Vecin] > Max1)
Max2 = Max1, Max1 = Dist[Vecin];
else
if(Dist[Vecin] > Max2)
Max2 = Dist[Vecin];
}
Dist[Nod] = Max1 + 1;
Solution = (Solution < Dist[Nod] + Max2 ? Dist[Nod] + Max2 : Solution);
}
void Read() {
int i, x, y;
ifstream in("darb.in");
in >> N;
for(i = 1; i < N; i++) {
in >> x >> y;
Graph[x].push_back(y);
Graph[y].push_back(x);
}
in.close();
}
void Write() {
ofstream out("darb.out");
out << Solution << '\n';
out.close();
}
int main() {
Read();
Dfs(1, 0);
Write();
return 0;
}