Submission #1345731

#TimeUsernameProblemLanguageResultExecution timeMemory
1345731killerzaluu철인 이종 경기 (APIO18_duathlon)C++20
0 / 100
1095 ms6468 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;

    vector<vector<int>> g(n + 1);
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }

    long long ans = 0;
    vector<int> vis(n + 1);

    for (int ban = 1; ban <= n; ban++) {
        fill(vis.begin(), vis.end(), 0);
        vis[ban] = 1;

        vector<int> comp;

        for (int i = 1; i <= n; i++) {
            if (vis[i]) continue;

            int cnt = 0;
            queue<int> q;
            q.push(i);
            vis[i] = 1;

            while (!q.empty()) {
                int u = q.front();
                q.pop();
                cnt++;

                for (int v : g[u]) {
                    if (!vis[v]) {
                        vis[v] = 1;
                        q.push(v);
                    }
                }
            }

            comp.push_back(cnt);
        }

        long long pref = 0;
        long long cur = 0;
        for (int x : comp) {
            cur += pref * x;
            pref += x;
        }

        ans += 2LL * cur;
    }

    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...
#Verdict Execution timeMemoryGrader output
Fetching results...