Submission #585027

# Submission time Handle Problem Language Result Execution time Memory
585027 2022-06-28T09:06:31 Z Dan4Life Dreaming (IOI13_dreaming) C++17
0 / 100
63 ms 24484 KB
#include "dreaming.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define sz(a) (int)a.size()
const int maxn = (int)1e5+10;

vector<pair<int,int>> adj[maxn];
set<pair<int,int>> S[maxn];
int vis[maxn], max_dis[maxn], diameter[maxn];
int n, m, root1, root2, cnt = 1;

void dfs2(int s, int p){
    for(auto c : adj[s]){
        int u = c.fi, w = c.se;
        if(u==p) continue; dfs2(u, s);
        S[s].insert({max_dis[u]+w, u});
    }
    int tot = 0;
    if(p!=-1){
        auto x = S[p];
        for(auto u : x)
            if(u.se!=s) tot = u.fi;
    }
    while(sz(S[s])>2) S[s].erase(S[s].begin());
    for(auto u : S[s]) tot = max(tot, u.fi);
}

void dfs(int s, int p){
    vis[s] = cnt;
    multiset<int> S; S.clear();
    for(auto c : adj[s]){
        int u = c.fi, w = c.se;
        if(u==p) continue; dfs(u, s);
        max_dis[s] = max(max_dis[s], max_dis[u]+w);
        S.insert(max_dis[u]+w);
    }
    while(sz(S)>2) S.erase(S.begin());
    int sum = 0; for(auto u : S) sum+=u;
    diameter[s] = sum;
}

int diam(int cc){
    int ans = 0;
    for(int i = 1; i <= n; i++)
        if(vis[i]==cc) ans = max(ans, diameter[i]);
    return ans;
}

int path(int cc){
    int ans = 0;
    for(int i = 1; i <= n; i++)
        if(vis[i]==cc) ans = max(ans, diameter[i]);
    return ans;
}

int travelTime(int N, int M, int L, int A[], int B[], int T[]){
    n = N, m = M;
    for(int i = 0; i < M; i++)
        adj[A[i]].pb({B[i],T[i]}),
        adj[B[i]].pb({A[i],T[i]});
    root1 = 1; dfs(root1,-1);
    for(int i = 1; i <= N; i++)
        if(!vis[i]) root2 = i;
    cnt++; dfs(root2,-1);
    return max({diam(1), diam(2), path(1)+L+path(2)});
}

Compilation message

dreaming.cpp: In function 'void dfs2(int, int)':
dreaming.cpp:18:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   18 |         if(u==p) continue; dfs2(u, s);
      |         ^~
dreaming.cpp:18:28: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   18 |         if(u==p) continue; dfs2(u, s);
      |                            ^~~~
dreaming.cpp: In function 'void dfs(int, int)':
dreaming.cpp:36:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   36 |         if(u==p) continue; dfs(u, s);
      |         ^~
dreaming.cpp:36:28: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   36 |         if(u==p) continue; dfs(u, s);
      |                            ^~~
# Verdict Execution time Memory Grader output
1 Incorrect 63 ms 24484 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 7352 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 63 ms 24484 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 20 ms 10036 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 7352 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 63 ms 24484 KB Output isn't correct
2 Halted 0 ms 0 KB -