Submission #742130

# Submission time Handle Problem Language Result Execution time Memory
742130 2023-05-15T16:28:41 Z speedyArda Duathlon (APIO18_duathlon) C++14
8 / 100
478 ms 1048576 KB
#include "bits/stdc++.h"

using namespace std;
const int MAXN = 1e5+5;
vector< vector<int> > adj(MAXN);
bool visited[MAXN];
long long sz[MAXN];
long long bgsz[MAXN];
int par[MAXN];
long long add[MAXN];
int n, m;
int find(int v)
{
    if(par[v] == v)
        return v;
    return par[v] = find(par[v]); 
}

void merge(int a, int b)
{
    a = find(a), b = find(b);
    if(a == b)
        return;
    if(bgsz[a] < bgsz[b])
        swap(a, b);
    par[b] = par[a];
    bgsz[a] += bgsz[b];
}
pair<long long, bool> subtask3(int v, int p)
{
    pair<long long, bool> ans = {1, false};
    visited[v] = true;

    for(int e : adj[v])
    {
        if(e == p)
            continue;
        if(visited[e]) {
            ans.second = true;
            continue;
        }
        pair<long long, bool> temp = subtask3(e, v);
        ans.first += temp.first;
        ans.second |= temp.second;
    }
    return ans;
}

long long subtask5(int v, int p)
{
    long long ans = 0;
    visited[v] = true;
    sz[v] = 1;
    long long chi_size = 0;
    for(int e : adj[v])
    {
        if(e == p)
            continue;
        ans += subtask5(e, v);
        sz[v] += sz[e];
        chi_size += sz[e];
    }
    int bigpar = find(v);
    long long par_size = bgsz[bigpar] - chi_size - 1;
    ans += par_size * chi_size;
    for(int e : adj[v])
    {
        if(e == p)
            continue;
        ans += sz[e] * (bgsz[bigpar] - sz[e] - 1LL);
    }
    return ans;
}
int main() 
{
    long long temp = 0;
    add[0] = 0;
    for(long long i = 1; i < MAXN; i++)
    {
        temp += i;
        add[i] = add[i - 1] + temp;
        par[i] = i;
    }
    cin >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        int f, s;
        cin >> f >> s;
        adj[f].push_back(s);
        adj[s].push_back(f);
        merge(f, s);
    }

    int max_size = 0;
    for(int i = 1; i <= n; i++)
    {
        max_size = max(max_size, (int)adj[i].size());
    }
    long long ans = 0;
    if(max_size <= 2) // Subtask 3
    {
        for(int i = 1; i <= n; i++)
        {
            if(visited[i])
                continue;
            pair<long long, bool> curr = subtask3(i, -1);
            if(curr.second)
            {
                ans += curr.first * (curr.first - 1) * (curr.first - 2);
            } else if(curr.first >= 3)
            {
                ans += add[curr.first - 2] * 2LL;
            }
        }   
    } else 
    {
        for(int i = 1; i <= n; i++)
        {
            if(visited[i])
                continue;
            ans += subtask5(i, -1);
        }
    }


    cout << ans << "\n";
    
}
# Verdict Execution time Memory Grader output
1 Runtime error 478 ms 1048576 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 478 ms 1048576 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 112 ms 15652 KB Output is correct
2 Correct 131 ms 15536 KB Output is correct
3 Correct 101 ms 11668 KB Output is correct
4 Correct 109 ms 13608 KB Output is correct
5 Correct 99 ms 10416 KB Output is correct
6 Correct 96 ms 10428 KB Output is correct
7 Correct 115 ms 9292 KB Output is correct
8 Correct 114 ms 9976 KB Output is correct
9 Correct 119 ms 8560 KB Output is correct
10 Correct 99 ms 9228 KB Output is correct
11 Correct 72 ms 7732 KB Output is correct
12 Correct 69 ms 7628 KB Output is correct
13 Correct 66 ms 7696 KB Output is correct
14 Correct 81 ms 7500 KB Output is correct
15 Correct 57 ms 7208 KB Output is correct
16 Correct 68 ms 7112 KB Output is correct
17 Correct 3 ms 4436 KB Output is correct
18 Correct 3 ms 4436 KB Output is correct
19 Correct 3 ms 4308 KB Output is correct
20 Correct 3 ms 4308 KB Output is correct
21 Correct 3 ms 4180 KB Output is correct
22 Correct 3 ms 4180 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3796 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 92 ms 8600 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3796 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 107 ms 8652 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 478 ms 1048576 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 478 ms 1048576 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -