Submission #793562

# Submission time Handle Problem Language Result Execution time Memory
793562 2023-07-26T02:32:08 Z vjudge1 Putovanje (COCI20_putovanje) C++17
110 / 110
253 ms 40372 KB
#include<bits/stdc++.h>
using namespace std;

const int N = 200100;
const int K = 20;

vector<int> adj[N];
int pai[N][K], in[N], out[N], cs = 0;
long long cost[N];

void pre_dfs(int u, int p)
{
    in[u] = cs++;
    pai[u][0] = p;
    for(int i = 1; i < K; i++)
        pai[u][i] = pai[pai[u][i-1]][i-1];
    for(int v : adj[u])
        if(v != p)
            pre_dfs(v, u);
    out[u] = cs++;
}

// u is ancestor of v ?
bool is_ancestor(int u, int v)
{
    return in[u] <= in[v] && out[v] <= out[u];
}

int calc_lca(int a, int b)
{
    if(is_ancestor(a, b))
        return a;
    if(is_ancestor(b, a))
        return b;
    for(int i = K-1; i >=0; i--)
    {
        if(!is_ancestor(pai[b][i], a))
            b = pai[b][i];
    }
    return pai[b][0];
}

map<pair<int,int>,pair<int,int>> mp;

long long rs = 0;

void dfs(int u, int p)
{
    for(int v : adj[u])
        if(v != p)
        {
            dfs(v, u);
            cost[u] += cost[v];
        }

    rs += min(mp[{u,p}].first*cost[u],(long long)mp[{u,p}].second);
}


void test()
{
    int n;
    cin >> n;
    for(int i = 0, u, v, c1, c2; i < n-1; i++)
    {
        cin >> u >> v >> c1 >> c2;
        mp[{u,v}] = mp[{v,u}] = {c1,c2};
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    pre_dfs(1, 1);
    for(int i = 1; i < n; i++)
    {
        int lc = calc_lca(i, i+1);
        cost[lc] -=2;
        cost[i] += 1;
        cost[i+1] += 1;
    }
    dfs(1, 1);
    cout << rs << '\n';
}

int32_t main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    
    test();

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4948 KB Output is correct
2 Correct 4 ms 5520 KB Output is correct
3 Correct 6 ms 5556 KB Output is correct
4 Correct 5 ms 5588 KB Output is correct
5 Correct 5 ms 5588 KB Output is correct
6 Correct 3 ms 4988 KB Output is correct
7 Correct 3 ms 5076 KB Output is correct
8 Correct 4 ms 5332 KB Output is correct
9 Correct 4 ms 5460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 177 ms 34848 KB Output is correct
2 Correct 190 ms 36660 KB Output is correct
3 Correct 226 ms 40372 KB Output is correct
4 Correct 243 ms 39864 KB Output is correct
5 Correct 3 ms 5204 KB Output is correct
6 Correct 192 ms 34072 KB Output is correct
7 Correct 134 ms 26376 KB Output is correct
8 Correct 221 ms 34764 KB Output is correct
9 Correct 108 ms 36240 KB Output is correct
10 Correct 107 ms 35212 KB Output is correct
11 Correct 138 ms 37804 KB Output is correct
12 Correct 110 ms 38036 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4948 KB Output is correct
2 Correct 4 ms 5520 KB Output is correct
3 Correct 6 ms 5556 KB Output is correct
4 Correct 5 ms 5588 KB Output is correct
5 Correct 5 ms 5588 KB Output is correct
6 Correct 3 ms 4988 KB Output is correct
7 Correct 3 ms 5076 KB Output is correct
8 Correct 4 ms 5332 KB Output is correct
9 Correct 4 ms 5460 KB Output is correct
10 Correct 177 ms 34848 KB Output is correct
11 Correct 190 ms 36660 KB Output is correct
12 Correct 226 ms 40372 KB Output is correct
13 Correct 243 ms 39864 KB Output is correct
14 Correct 3 ms 5204 KB Output is correct
15 Correct 192 ms 34072 KB Output is correct
16 Correct 134 ms 26376 KB Output is correct
17 Correct 221 ms 34764 KB Output is correct
18 Correct 108 ms 36240 KB Output is correct
19 Correct 107 ms 35212 KB Output is correct
20 Correct 138 ms 37804 KB Output is correct
21 Correct 110 ms 38036 KB Output is correct
22 Correct 246 ms 31308 KB Output is correct
23 Correct 190 ms 28204 KB Output is correct
24 Correct 253 ms 30992 KB Output is correct
25 Correct 4 ms 5296 KB Output is correct
26 Correct 80 ms 16848 KB Output is correct
27 Correct 170 ms 27228 KB Output is correct
28 Correct 87 ms 32536 KB Output is correct
29 Correct 113 ms 38136 KB Output is correct
30 Correct 109 ms 37608 KB Output is correct
31 Correct 4 ms 5460 KB Output is correct