Pagini recente » Cod sursa (job #2276573) | Cod sursa (job #1249262) | Cod sursa (job #2584626) | Cod sursa (job #3208917) | Cod sursa (job #2632560)
#include <bits/stdc++.h>
const char* inputFile = "darb.in";
const char* outputFile = "darb.out";
unsigned N, cont, maxx, leaf;
#define NMAX 500000
std::vector<unsigned> adj[NMAX];
std::vector<bool> viz;
#undef NMAX
void dfs(unsigned src)
{
for(unsigned i = 0; i < adj[src].size(); ++i)
{
unsigned curr = adj[src][i];
if(!viz[curr])
{
++cont;
if(cont > maxx)
{
maxx = cont;
leaf = curr;
}
viz[curr] = true;
dfs(curr);
}
}
--cont;
}
int main(void)
{
FILE* pf = fopen(inputFile, "r");
fscanf(pf, "%u", &N);
#define pb push_back
for(unsigned i = 1; i < N; ++i)
{
unsigned u, v;
fscanf(pf, "%u%u", &u, &v);
adj[u].pb(v), adj[v].pb(u);
}
#undef pb
fclose(pf);
viz.resize(N + 1);
viz[1] = true;
cont = maxx = leaf = 1;
dfs(1);
viz.assign(N + 1, false);
viz[leaf] = true;
cont = maxx = 1;
dfs(leaf);
pf = fopen(outputFile, "w");
fprintf(pf, "%u", maxx);
fclose(pf);
return 0;
}