답안 #698685

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
698685 2023-02-14T07:41:20 Z vjudge1 철인 이종 경기 (APIO18_duathlon) C++17
0 / 100
73 ms 15500 KB
#include "bits/stdc++.h"
#define ll long long
using namespace std;
const ll mod = 1000000007;

vector<int> v[100001];
int d[100001], par[1000001], child[100001];
ll pp[100001];
set<pair<int, int>> s;

void dfs(int x) {
    bool yes = 1;
    for(int i : v[x]) {
        if(!par[i]) {
            child[x]++;
            par[i] = x;
            d[i] = d[x] + 1;
            dfs(i);
            yes = 0;
        }
    }
    if(yes)
        s.insert({-d[x], x});
    pp[x] = 1;
}

signed main () {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    // freopen("cowland.in","r",stdin);
    // freopen("cowland.out","w",stdout);

    int n, m;
    cin >> n >> m;
    for(int i = 0; i < m; i++) {
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    for(int i = 1; i <= n; i++) {
        if(!par[i]) {
            par[i] = i;
            dfs(i);
        }
    }
    ll ans = 0;
    while(s.size()) {
        pair<int, int> p = *s.begin();
        s.erase(s.begin());
        int x = p.second;
        if(par[x] != x) {
            child[par[x]]--;
            pp[par[x]] += pp[x];
            ans += (pp[x] * (pp[x] - 1));
            if(!child[par[x]])
                s.insert({d[par[x]], par[x]});
        }
        // cout << x << " " << pp[x] << " " << ans << "\n";
    }
    cout << ans;

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 57 ms 15500 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 73 ms 10264 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 66 ms 10124 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2644 KB Output isn't correct
2 Halted 0 ms 0 KB -