Pagini recente » Cod sursa (job #2650152) | Cod sursa (job #293773) | Cod sursa (job #759114) | Cod sursa (job #2850523) | Cod sursa (job #2030904)
#include <fstream>
#include <vector>
#define Nmax 100005
using namespace std;
vector <int> G[Nmax];
int lung[Nmax],rasp[Nmax],n;
bool viz[Nmax];
ifstream f("darb.in");
ofstream g("darb.out");
void dfs(int x)
{
vector <int> Sons;
viz[x]=1;
for(auto it : G[x])
if(!viz[it])
{
Sons.push_back(it);
dfs(it);
}
int maxim=0, maxim2=0;
for(auto it: Sons)
{
if(lung[it]>maxim)
{
maxim2=maxim;
maxim=lung[it];
}
else if(lung[it]>maxim2)
maxim2=lung[it];
}
lung[x]=maxim+1;
rasp[x]=maxim+maxim2+1;
}
int main()
{
int i;
f>>n;
for(i=1; i<=n; i++)
{
int x,y;
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
dfs(4);
for(i=1; i<=n; i++)
g<<lung[i]<<" ";
g<<'\n';
for(i=1; i<=n; i++)
g<<rasp[i]<<" ";
g<<'\n';
g<<rasp[4];
return 0;
}