Submission #1145229

#TimeUsernameProblemLanguageResultExecution timeMemory
1145229asdfghjkRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define pb push_back
#define all(x) x.begin(), x.end()
#define F first
#define S second
#define con continue
using namespace std;
typedef long long ll;
typedef double db;
typedef long double ld;
typedef pair<ll,ll> pii;

const ll N = 1e5 + 5;
const ll MOD = 1e9 + 7;
const ll maxn = 6e5 + 5;
const ll inf = 1e9+1;
const ll INF = 1e18;
const ll K = 31;

/*vector <ll> z_function(string s){
//    ll n = s.size();
//    ll l = 0,r = 0;
//    vector <ll> z(n);
//    for(ll i = 1;i < n;i++){
//        if(i <= r){
//            z[i] = (r - i + 1,z[i - l]);
//        }
//        while(i + z[i] < n && s[z[i]] == s[z[i] + i]){
//            z[i]++;
//        }
//        if(i + z[i] - 1 > r){
//            r = i + z[i]-1;
//            l = i;
//        }
//    }
}*/

/*vector <ll> prefix_function(string s){
    ll n = s.size();
    vector <ll> pi(n,0);
    for(ll i = 1;i < n;i++){
        ll j = pi[i - 1];
        while(j > 0 && s[i] != s[j]){
            j = pi[j - 1];
        }
        if(s[i] == s[j])++j;
        pi[i] = j;
    }
    return pi;
}*/

vector <pii> g[N];
ll d,ans = inf,C,was[N];
ll get_sz(ll v,ll p,ll n){
    ll sz= 1 ;
    for(auto [to,w] : g[v]){
        if(was[to] || to == p)con;
        sz += get_sz(to,v,n);
    }
    if(!C && (sz+sz>=n || p == 0))C = v;
    return sz;
}
set <ll> has;
map<ll,ll> val;
ll dep[N],dis[N];
void dfs(ll v,ll p){
    if(has.count(d - dis[v]) == 1){
        ans = min(ans,(dep[v]+val[(d - dis[v])]));
    }
    for(auto [to,w] : g[v]){
        if(to == p || was[to])con;
        dis[to] = dis[v] + w;
        dep[to] = dep[v] + 1;
        dfs(to,v);
    }
}
void add(ll v,ll p){
    if(has.count(dis[v]) == 0){
        has.insert(dis[v]);
        val[dis[v]] = dep[v];
    }
    val[dis[v]] = min(val[dis[v]],dep[v]);
    for(auto [to,w] : g[v]){
        if(was[to] || to == p)con;
        add(to,v);
    }
}
void centr_decop(ll v,ll n){
    C = 0;
    get_sz(v,0,n);
    ll c = C;
    has.clear();
    val.clear();
    dis[c] = dep[c] = 0;
    for(auto [to,w] : g[c]){
        if(was[to])con;
        dep[to] = dep[c] + 1;
        dis[to] = dis[c] + w;
        dfs(to,c);
        add(to,c);
    }
    was[c] = 1;
    for(auto  [to,w] : g[c]){
        if(was[to])con;
        centr_decop(to,n / 2);
    }
}
ll best_path(ll nn,ll k,ll h[][2],ll l[]){
    ll n = nn;
    d = k;
    for(ll i = 1;i < n;i++){
        ll u = h[i][0];
        ll v = h[i][1];
        u++;
        v++;
        ll w = l[i];
        g[u].pb({v,w});
        g[v].pb({u,w});
    }
    centr_decop(1,n);
    if(ans == inf)return -1;
    return ans;
}
//void solve(){
//    ll n =
//}
//main(){
//    ios_base::sync_with_stdio(0);
//    cin.tie(0);
//    ll abd = 1;
////    freopen("yinyang.in","r",stdin);
////    freopen("yinyang.out","w",stdout);
//
////    cin >> abd;
//    for(ll i = 1;i <= abd;i++){
//        solve();
//    }
//}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccy0k4BO.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status