Pagini recente » Cod sursa (job #2483394) | Cod sursa (job #634893) | Cod sursa (job #2537157) | Cod sursa (job #2460094) | Cod sursa (job #1871257)
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
#define NMAX 100001
using namespace std;
vector < int > nod[NMAX];
queue < pair < int , int > > coada;
int N;
int diametru, aux;
bool viz[NMAX];
void Citire()
{
ifstream fin("darb.in");
int x, y;
fin >> N;
for (int i = 1;i < N;++i)
{
fin >> x >> y;
nod[x].push_back(y);
nod[y].push_back(x);
}
fin.close();
}
void Lee(int start)
{
viz[start] = true; /// VIZITEZ POZITIA DE START
coada.push(make_pair(start, 1)); /// POZITIA DE START SI NR DE PASI
while (!coada.empty())
{
int nd = coada.front().first;
int pasi = coada.front().second;
coada.pop();
if (pasi > diametru)
{
diametru = pasi;
aux = nd;
}
for (int i = 0; i < nod[nd].size(); ++i)
if (!viz[nod[nd][i]])
{
coada.push(make_pair(nod[nd][i], pasi + 1));
viz[nod[nd][i]] = true;
}
}
}
int main()
{
ofstream fout("darb.out");
Citire();
Lee(1);
memset(viz, false , NMAX);
diametru = 0;
Lee(aux);
fout << diametru;
return 0;
}