Submission #279729

# Submission time Handle Problem Language Result Execution time Memory
279729 2020-08-22T10:23:29 Z nvmdava Duathlon (APIO18_duathlon) C++17
0 / 100
184 ms 32632 KB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N = 200005;
const ll MOD = 1000000007;
const int INF = 0x3f3f3f3f;

vector<int> adj[N];

int d[N], n;
bool sep[N];

int dfs(int v){
    int t = N;
    for(auto& x : adj[v]){
        if(d[x] == d[v] - 1)
            continue;
        if(d[x] == -1){
            d[x] = d[v] + 1;
            int a = dfs(x);
            if(a >= d[v])
                sep[x] = 1;
            t = min(t, a);
        } else
            t = min(t, d[x]);
    }

    return t;
}

int sz[N];
int cnt = 0;

vector<int> adj2[N];
void dfs2(int v, int c){
    ++sz[c];
    bool did = 0;
    int nv = 0;
    for(auto& x : adj[v]){
        if(d[x] != d[v] + 1) continue;
        if(sep[x]){
            if(did == 0){
                nv = ++cnt;
                did = 1;
                if(d[v] != 1){
                    adj2[c].push_back(nv);
                    adj2[nv].push_back(c);
                }
            }
            adj2[nv].push_back(++cnt);
            adj2[cnt].push_back(nv);
            sz[cnt] = 1;
            dfs2(x, cnt);
        } else {
            dfs2(x, c);
        }
    }
}

ll ans = 0;
int szz[N];
void dfs3(int v, int p){
    vector<int> a;
    for(auto& x : adj2[v]){
        if(x == p) continue;
        dfs3(x, v);
        szz[v] += szz[x] - 1;
        a.push_back(szz[x] - 1);
    }

    szz[v] += max(1, sz[v]);

    a.push_back(n - szz[v]);

    if(sz[v]){
        for(auto& x : a){
            ans -= 1LL * (sz[v] - 1) * x * (x + 1);
        }
    }
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
 
    int m;
    cin>>n>>m;

    while(m--){
        int v, u;
        cin>>v>>u;
        adj[v].push_back(u);
        adj[u].push_back(v);
    }

    for(int i = 1; i <= n; ++i)
        d[i] = -1;
    d[1] = 1;

    dfs(1);
    dfs2(1, 0);
    dfs3(1, 0);

    ans += 1LL * n * (n - 1) * (n - 2);

    cout<<ans;
}
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 9728 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 9728 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 93 ms 22392 KB Output is correct
2 Correct 108 ms 22472 KB Output is correct
3 Incorrect 76 ms 18552 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 9856 KB Output is correct
2 Correct 8 ms 9856 KB Output is correct
3 Correct 9 ms 9856 KB Output is correct
4 Correct 7 ms 9984 KB Output is correct
5 Correct 7 ms 9984 KB Output is correct
6 Correct 7 ms 9984 KB Output is correct
7 Correct 7 ms 9984 KB Output is correct
8 Correct 7 ms 9856 KB Output is correct
9 Correct 8 ms 9856 KB Output is correct
10 Incorrect 7 ms 9856 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 134 ms 20728 KB Output is correct
2 Correct 145 ms 20728 KB Output is correct
3 Correct 118 ms 20728 KB Output is correct
4 Correct 134 ms 20728 KB Output is correct
5 Correct 106 ms 20728 KB Output is correct
6 Correct 184 ms 32632 KB Output is correct
7 Correct 122 ms 28536 KB Output is correct
8 Correct 130 ms 26656 KB Output is correct
9 Correct 115 ms 24824 KB Output is correct
10 Incorrect 88 ms 18168 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 9856 KB Output is correct
2 Correct 7 ms 9856 KB Output is correct
3 Correct 7 ms 9856 KB Output is correct
4 Correct 7 ms 9856 KB Output is correct
5 Correct 7 ms 9856 KB Output is correct
6 Correct 7 ms 9856 KB Output is correct
7 Correct 7 ms 9856 KB Output is correct
8 Correct 7 ms 9856 KB Output is correct
9 Correct 6 ms 9856 KB Output is correct
10 Correct 7 ms 9856 KB Output is correct
11 Correct 7 ms 9856 KB Output is correct
12 Correct 7 ms 9984 KB Output is correct
13 Correct 8 ms 9856 KB Output is correct
14 Correct 7 ms 9856 KB Output is correct
15 Correct 7 ms 9856 KB Output is correct
16 Incorrect 7 ms 9856 KB Output isn't correct
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 109 ms 20728 KB Output is correct
2 Correct 111 ms 21112 KB Output is correct
3 Correct 120 ms 20472 KB Output is correct
4 Correct 120 ms 19064 KB Output is correct
5 Correct 101 ms 17272 KB Output is correct
6 Correct 101 ms 16508 KB Output is correct
7 Correct 102 ms 16124 KB Output is correct
8 Correct 103 ms 15736 KB Output is correct
9 Correct 103 ms 15476 KB Output is correct
10 Correct 78 ms 15224 KB Output is correct
11 Correct 86 ms 14968 KB Output is correct
12 Correct 92 ms 14968 KB Output is correct
13 Correct 97 ms 14968 KB Output is correct
14 Correct 72 ms 16760 KB Output is correct
15 Correct 146 ms 28024 KB Output is correct
16 Correct 155 ms 25464 KB Output is correct
17 Correct 151 ms 26104 KB Output is correct
18 Correct 115 ms 23904 KB Output is correct
19 Incorrect 118 ms 18808 KB Output isn't correct
20 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 9728 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 9728 KB Output isn't correct
2 Halted 0 ms 0 KB -