Cod sursa(job #2924311)

Utilizator Paul281881818818181991919191881818Draghici Paul Paul281881818818181991919191881818 Data 29 septembrie 2022 10:42:35
Problema Diametrul unui arbore Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector<int> V[102];
int n;
bool viz[102];
int maxd = -1 ,maxNode = -1;
void DFS(int node, int d){
    viz[node] = true;
    if(d > maxd){
        maxd = d;
        maxNode = node;
    }
    for(vector<int>::iterator it = V[node].begin(); it != V[node].end(); it++){
        if(viz[*it] == 0){
            DFS(*it, d+1);
        }
    }
}
int main()
{
    fin >> n;
    int x1, x2;
    while(fin >> x1 >> x2){
        V[x1].push_back(x2);
        V[x2].push_back(x1);
    }
    int minNode;
    for(int i=1; i<=n; i++){
        if(V[i].size() % 2 == 0){
            minNode = i;
        }
    }
    DFS(minNode, 1);
    maxd = -1;
    for(int i=1; i<=n; i++)
        viz[i] = false;
    DFS(maxNode, 1);
    fout << maxd;
    return 0;
}