Pagini recente » Cod sursa (job #222721) | Cod sursa (job #1531102) | Diferente pentru preoni-2005/runda-1/solutii intre reviziile 21 si 22 | Cod sursa (job #2378940) | Cod sursa (job #2052590)
//#include <iostream> //40pct
//#include <fstream>
//#include <vector>
//#include <queue>
//
//using namespace std;
//
//ifstream fin ("darb.in");
//ofstream fout ("darb.out");
//
//const int Nmax=100000;
//int N, dmax, dist[Nmax+5];
//
//
//vector < int > listaAdiacenta[Nmax+5];
//queue < int > coada;
//
//void Read()
//{
// fin >> N;
// for (int i=1; i<=N-1; i++)
// {
// int x, y;
// fin >> x >> y;
// listaAdiacenta[x].push_back(y);
// listaAdiacenta[y].push_back(x);
// }
// fin.close();
//}
//
//void ClearQueue(queue < int > q)
//{
// while (!q.empty())
// q.pop();
//}
//
//void BFS(int nod)
//{
// ClearQueue(coada);
// coada.push(nod);
// for (int i=1; i<=N; i++)
// dist[i]=-1;
// dist[nod]=1;
// while (!coada.empty())
// {
// int nodCurent=coada.front();
// coada.pop();
// for (int i=0; i<(int)listaAdiacenta[nodCurent].size(); i++)
// {
// int vecin=listaAdiacenta[nodCurent][i];
// if (dist[vecin]==-1)
// {
// dist[vecin]=dist[nodCurent]+1;
// if (dist[vecin]>dmax)
// dmax=dist[vecin];
// coada.push(vecin);
// }
// }
// }
//}
//
//void Print()
//{
// fout << dmax << "\n";
//}
//
//int main()
//{
// Read();
// for (int i=1; i<=N; i++)
// BFS(i);
// Print();
// return 0;
//}
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("darb.in");
ofstream fout ("darb.out");
const int Nmax=100000;
int N, dmax, dist[Nmax+5], ultimul;
vector < int > listaAdiacenta[Nmax+5];
queue < int > coada;
void Read()
{
fin >> N;
for (int i=1; i<=N-1; i++)
{
int x, y;
fin >> x >> y;
listaAdiacenta[x].push_back(y);
listaAdiacenta[y].push_back(x);
}
fin.close();
}
void BFS(int nod)
{
coada.push(nod);
for (int i=1; i<=Nmax+5; i++)
dist[i]=0;
dist[nod]=1;
while (!coada.empty())
{
int nodCurent=coada.front();
coada.pop();
for (int i=0; i<(int)listaAdiacenta[nodCurent].size(); i++)
{
int vecin=listaAdiacenta[nodCurent][i];
if (dist[vecin]==0)
{
dist[vecin]=dist[nodCurent]+1;
coada.push(vecin);
dmax=dist[vecin];
ultimul=vecin;
}
}
}
}
void Rezolvare()
{
BFS(1);
BFS(ultimul);
}
void Print()
{
fout << dmax << "\n";
fout.close();
}
int main()
{
Read();
Rezolvare();
Print();
}