Submission #1336135

#TimeUsernameProblemLanguageResultExecution timeMemory
1336135reverberatedevCijanobakterije (COCI21_cijanobakterije)C++20
70 / 70
34 ms11452 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define DEBUG 1

#ifdef DEBUG
    #define OUT(x) cerr << (#x) << '=' << (x) << endl
    #define OUT2(c) cerr << (#c) << " = {"; for (auto it = (c).begin(); it != (c).end(); ++it) cerr << (it == (c).begin() ? "" : ", ") << *it; cerr << "}" << endl;
#else
    #define OUT(x)
    #define OUT2(c)
#endif

const int MAXN = 1e5 + 5;

int n, m, ans;
vector<int> adj[MAXN];
int depth[MAXN];
bool visited[MAXN];
pair<int, int> best;

void dfs(int u, int p, int d){
    visited[u] = 1;
    depth[u] = d;
    best = max(best, {d, u});
    for(int v : adj[u]){
        if(v == p) continue;
        dfs(v, u, d + 1);
    }
}

void solve() {
    cin >> n >> m;
    for(int i = 0; i < m; i++){
        int a, b; cin >> a >> b; a--, b--;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    int ans = 0;
    for(int i = 0; i < n; i++){
        if(visited[i]) continue;
        best = {-1, -1};
        dfs(i, -1, 1);
        dfs(best.second, -1, 1);
        ans += best.first;
    }
    cout << ans << '\n';
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int tt; tt = 1;
    while (tt--) {
        solve();
    }
}
#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...