Submission #337305

# Submission time Handle Problem Language Result Execution time Memory
337305 2020-12-19T16:25:16 Z bigDuck Dreaming (IOI13_dreaming) C++14
14 / 100
83 ms 17260 KB
#include "dreaming.h"
#include<bits/stdc++.h>
using namespace std;
#define INIT  ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define mp make_pair
#define pb push_back
#define ft first
#define sc second
#define ll long long
#define pii pair<int, int>
#define count_bits __builtin_popcount





vector<pii> g[100010];
int dp[100010][2];
pii dir[100010][2];



bool v[100010];

int h[100010], c;
int d[100010];


int dfs(int s){
v[s]=true;

for(pii e:g[s]){
    int l=e.sc, u=e.ft;
    if(!v[u]){
        dfs(u);
        if( (dp[u][0]+l)>dp[s][0]){
            dp[s][1]=dp[s][0];
            dp[s][0]=dp[u][0]+l;

            dir[s][1]=dir[s][0];
            dir[s][0]={u, l};
        }
        else{
            if( (dp[u][0]+l)>dp[s][1] ){
                dp[s][1]=dp[u][0]+l;
                dir[s][1]={u, l};
            }
        }
    }

}


return dp[s][0];
}




int dfs2(int s, int up){
int ac=dp[s][0];

if(ac<=up){
    return ac;
}
int l=dir[s][0].sc;
int r=dfs2(dir[s][0].ft, up+l);


if( ( max(r , up+l)<max(up, dp[s][0])  )   ){
    return max(r, up+l);
}
else{
    return max(up, dp[s][0]);
}

}



bool v2[100010];

pii diam(int s){
    v2[s]=true;

    pii r={0, s};
    for(pii e:g[s]){
        int u=e.ft, l=e.sc;
        if(!v2[u]){
            pii p=diam(u); p.ft+=l;
            if(p.ft>=r.ft){
                r=p;
            }
        }
    }
    v2[s]=false;
    return r;
}







int travelTime(int n, int m, int l, int a[], int b[], int t[]){

    for(int i=0;i<m; i++){
        int u=a[i], v=b[i];
        g[u].pb({v, t[i]}); g[v].pb({u, t[i]});
    }
    int res=0;
    for(int i=0; i<n; i++){
        if(!v[i]){
            c++;
            dfs(i);
            int r=dfs2(i, dp[i][1]);
            pii p=diam(i);
            p=diam(p.sc);
            d[c]=p.ft;
            h[c]=r;
            res=max(res, d[c]);
        }
    }

    sort(h+1, h+1+c);
    int cr=h[c]+l;
    for(int i=c-1; i>=1; i--){
        res=max(res, cr+h[i]);
        cr+=l;
    }
    return res;
}
# Verdict Execution time Memory Grader output
1 Correct 64 ms 15980 KB Output is correct
2 Correct 60 ms 17260 KB Output is correct
3 Correct 40 ms 12524 KB Output is correct
4 Correct 9 ms 4844 KB Output is correct
5 Correct 8 ms 3948 KB Output is correct
6 Correct 15 ms 5868 KB Output is correct
7 Correct 2 ms 2796 KB Output is correct
8 Correct 29 ms 7788 KB Output is correct
9 Correct 47 ms 10476 KB Output is correct
10 Correct 2 ms 2796 KB Output is correct
11 Correct 65 ms 12396 KB Output is correct
12 Correct 83 ms 14700 KB Output is correct
13 Correct 2 ms 2796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 64 ms 15980 KB Output is correct
2 Correct 60 ms 17260 KB Output is correct
3 Correct 40 ms 12524 KB Output is correct
4 Correct 9 ms 4844 KB Output is correct
5 Correct 8 ms 3948 KB Output is correct
6 Correct 15 ms 5868 KB Output is correct
7 Correct 2 ms 2796 KB Output is correct
8 Correct 29 ms 7788 KB Output is correct
9 Correct 47 ms 10476 KB Output is correct
10 Correct 2 ms 2796 KB Output is correct
11 Correct 65 ms 12396 KB Output is correct
12 Correct 83 ms 14700 KB Output is correct
13 Correct 2 ms 2796 KB Output is correct
14 Correct 2 ms 2668 KB Output is correct
15 Correct 2 ms 2668 KB Output is correct
16 Incorrect 2 ms 2668 KB Output isn't correct
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 64 ms 15980 KB Output is correct
2 Correct 60 ms 17260 KB Output is correct
3 Correct 40 ms 12524 KB Output is correct
4 Correct 9 ms 4844 KB Output is correct
5 Correct 8 ms 3948 KB Output is correct
6 Correct 15 ms 5868 KB Output is correct
7 Correct 2 ms 2796 KB Output is correct
8 Correct 29 ms 7788 KB Output is correct
9 Correct 47 ms 10476 KB Output is correct
10 Correct 2 ms 2796 KB Output is correct
11 Correct 65 ms 12396 KB Output is correct
12 Correct 83 ms 14700 KB Output is correct
13 Correct 2 ms 2796 KB Output is correct
14 Correct 2 ms 2668 KB Output is correct
15 Correct 2 ms 2668 KB Output is correct
16 Incorrect 2 ms 2668 KB Output isn't correct
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 26 ms 7916 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 64 ms 15980 KB Output is correct
2 Correct 60 ms 17260 KB Output is correct
3 Correct 40 ms 12524 KB Output is correct
4 Correct 9 ms 4844 KB Output is correct
5 Correct 8 ms 3948 KB Output is correct
6 Correct 15 ms 5868 KB Output is correct
7 Correct 2 ms 2796 KB Output is correct
8 Correct 29 ms 7788 KB Output is correct
9 Correct 47 ms 10476 KB Output is correct
10 Correct 2 ms 2796 KB Output is correct
11 Correct 65 ms 12396 KB Output is correct
12 Correct 83 ms 14700 KB Output is correct
13 Correct 2 ms 2796 KB Output is correct
14 Incorrect 2 ms 2796 KB Output isn't correct
15 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 64 ms 15980 KB Output is correct
2 Correct 60 ms 17260 KB Output is correct
3 Correct 40 ms 12524 KB Output is correct
4 Correct 9 ms 4844 KB Output is correct
5 Correct 8 ms 3948 KB Output is correct
6 Correct 15 ms 5868 KB Output is correct
7 Correct 2 ms 2796 KB Output is correct
8 Correct 29 ms 7788 KB Output is correct
9 Correct 47 ms 10476 KB Output is correct
10 Correct 2 ms 2796 KB Output is correct
11 Correct 65 ms 12396 KB Output is correct
12 Correct 83 ms 14700 KB Output is correct
13 Correct 2 ms 2796 KB Output is correct
14 Correct 2 ms 2668 KB Output is correct
15 Correct 2 ms 2668 KB Output is correct
16 Incorrect 2 ms 2668 KB Output isn't correct
17 Halted 0 ms 0 KB -