Pagini recente » Cod sursa (job #850869) | Cod sursa (job #2396691) | Cod sursa (job #1744713) | Cod sursa (job #1213231) | Cod sursa (job #1440264)
#include <iostream>
#include <fstream>
#include <vector>
#define NMax 100001
using namespace std;
vector<int> Graf[NMax];
int uz[NMax];
int d[NMax],x,y,Max,N,last,start;
void Citire()
{
ifstream g("darb.in");
g>>N;
for(int i=1;i<=N;i++)
{
g>>x>>y;
Graf[x].push_back(y);
Graf[y].push_back(x);
}
}
void DFS1(int nod)
{
for(vector<int>::iterator it=Graf[nod].begin();it!=Graf[nod].end();it++)
{
if(uz[*it]==0)
{
uz[*it]=1;
d[*it]=d[nod]+1;
if(d[*it]>Max)
{
Max=d[*it];
last=*it;
}
DFS1(*it);
}
}
}
void DFS2(int nod)
{
for(vector<int>::iterator it=Graf[nod].begin();it!=Graf[nod].end();it++)
{
if(uz[*it]==1)
{
uz[*it]=0;
d[*it]=d[nod]+1;
if(d[*it]>Max)
{
Max=d[*it];
last=*it;
}
DFS2(*it);
}
}
}
int main()
{
Citire();
uz[x]=d[x]=1;
DFS1(x);
uz[last]=d[last]=1;
DFS2(last);
ofstream f("darb.out");
f<<Max;
}