Submission #530931

#TimeUsernameProblemLanguageResultExecution timeMemory
530931ivlsCijanobakterije (COCI21_cijanobakterije)C++14
70 / 70
38 ms10560 KiB
#include <bits/stdc++.h>

using namespace std;

mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());

using ll = long long;

const int inf = 2e9;

int n, m, mx, nm;
vector<int> g[100100];
bool used[100100];

void dfs(int v, int p, int de)
{
    used[v] = 1;
    if (de >= mx) { mx = de; nm = v; }
    for (auto u : g[v])
        if (u != p) dfs(u, v, de + 1);
}

int diam(int v)
{
    mx = 0;
    dfs(v, -1, 0);
    mx = 0;
    dfs(nm, -1, 0);
    return mx + 1;
}

int main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= m; i++)
    {
        int u, v;
        cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    int ans = 0;
    for (int i = 1; i <= n; i++)
        if (!used[i]) ans += diam(i);
    cout << ans << '\n';
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...