Submission #577162

#TimeUsernameProblemLanguageResultExecution timeMemory
577162eecsMountains and Valleys (CCO20_day1problem3)C++17
2 / 25
663 ms12648 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn = 500010;
int n, m;
vector<int> G[maxn];

int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    cin >> n >> m;
    assert(n <= 5000 && m <= 10000);
    vector<array<int, 3>> E;
    while (m--) {
        int u, v, w;
        cin >> u >> v >> w;
        if (w == 1) G[u].push_back(v), G[v].push_back(u);
        else E.push_back({w, u, v});
    }
    int diam = 0;
    for (int i = 1; i <= n; i++) {
        auto dfs = [&](auto self, int u, int fa, int d) -> void {
            diam = max(diam, d);
            for (int v : G[u]) if (v ^ fa) self(self, v, u, d + 1);
        };
        dfs(dfs, i, 0, 0);
    }
    int ans = 2 * (n - 1) - diam;
    cout << ans << "\n";
    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...