Cod sursa(job #2618497)

Utilizator RobertLearnsCDragomir Robert. RobertLearnsC Data 25 mai 2020 11:45:28
Problema Diametrul unui arbore Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;

vector <int> graph[200005];
int n, m, visited[200005], dist[200005];

void dfs(int currNode, int &maxi) {
    visited[currNode] = 1;
    for(int i = 0; i < graph[currNode].size(); ++i) {
        int neighbor_index = graph[currNode][i];
        if(!visited[neighbor_index]) {
            dist[neighbor_index] = dist[currNode] + 1;
            maxi = max(dist[neighbor_index], maxi);
            dfs(neighbor_index, maxi);
        }
    }
}

int main() {
    freopen("darb.in", "r", stdin);
    freopen("darb.out", "w", stdout);

    scanf("%d", &n);
    for(int i = 0; i < n - 1; ++i) {
        int x, y;
        scanf("%d%d", &x, &y);
        graph[x - 1].push_back(y - 1);
        graph[y - 1].push_back(x - 1);
    }

    int maxi = -1;
    for(int i = 0; i < n; ++i) {
        for(int j = 0; j < n; j++) {
            visited[j] = 0;
            dist[j] = 0;
        }
        if(graph[i].size()) {
            dist[i] = 1;
            dfs(i, maxi);
        }
    }

    printf("%d", maxi);
    return 0;
}