Pagini recente » Cod sursa (job #111683) | Cod sursa (job #189973) | Cod sursa (job #3001305) | Cod sursa (job #2165552) | Cod sursa (job #2058758)
#include<fstream>
#include<list>
#include<deque>
#include<bitset>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
const int NMAX=100005,INF=NMAX+5;
list<int>g[NMAX];
bitset<NMAX>vis;
int dist[NMAX],n,last_node,dmax=1;
void read_data(){
int node1,node2;
fin>>n;
while(fin>>node1>>node2){
g[node1].push_back(node2);
g[node2].push_back(node1);
}
}
void BFS(int start){
int node;
fill(dist+1,dist+1+n,INF);
list<int>::iterator it;
deque<int>d;
d.push_back(start);
vis[start]=true;
dist[start]=1;
while(!d.empty()){
node=d.front();
d.pop_front();
last_node=node;
for(it=g[node].begin();it!=g[node].end();++it)
if(!vis[*it]){
vis[*it]=true;
d.push_back(*it);
dist[*it]=dist[node]+1;
dmax=dist[*it];
}
}
vis.reset();
}
int main(){
read_data();
BFS(1);
BFS(last_node);
fout<<dmax;
}