Pagini recente » Cod sursa (job #2911661) | Cod sursa (job #1299205) | Cod sursa (job #369943) | Cod sursa (job #1447410) | Cod sursa (job #3135571)
#include <stdio.h>
#include <vector>
#include <queue>
#define N 100000
std::vector <int> vecini[1 + N];
std::queue <int> q;
int dist[1 + N];
int n, d;
int lee(int start) {
int last, next;
for ( int i = 1; i <= n; i ++ )
dist[i] = 0;
dist[start] = 1;
q.push(start);
do {
next = q.front();
last = next;
for ( unsigned int i = 0; i < vecini[next].size(); i ++ )
if ( dist[vecini[next][i]] == 0 ) {
dist[vecini[next][i]] = dist[next] + 1;
q.push(vecini[next][i]);
}
q.pop();
} while ( !q.empty() );
return last;
}
int main() {
FILE *fin, *fout;
int x, y, last;
fin = fopen("darb.in", "r");
fscanf(fin, "%d", &n);
for ( int i = 0; i < n - 1; i ++ ) {
fscanf(fin, "%d%d", &x, &y);
vecini[x].push_back(y);
vecini[y].push_back(x);
}
fclose(fin);
last = lee(1);
d = dist[lee(last)];
fout = fopen("darb.out", "w");
fprintf(fout, "%d\n", d);
fclose(fout);
return 0;
}