Submission #1337346

#TimeUsernameProblemLanguageResultExecution timeMemory
1337346madtFactories (JOI14_factories)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "factories.h"
#define pb push_back
#define fi first
#define se second
#define pii pair<ll,ll>
#define ll long long

using namespace std;

const int NN=5e5+5;
const int LOG=log2(N)+2;

ll n;
vector<pair<int, ll>> kaimini[NN];
int tin[NN], tout[NN];
int t;
int par[NN][LOG];
ll att[NN];

void dfs(int u, int p, ll di){
    att[u]=di;
    t++;
    tin[u]=t;
    par[u][0]=p;
    for(int i=1; i<LOG; i++){
        par[u][i]=par[par[u][i-1]][i-1];
    }
    for(auto v : kaimini[u])
        if(v.fi!=p)
            dfs(v.fi, u, di+v.se);
    tout[u]=t;
}

bool isanc(int u, int v){
    return tin[u]<=tin[v] && tout[v]<=tout[u];
}

int getlca(int u, int v){
    if(isanc(u, v))
        return u;
    if(isanc(v, u))
        return v;
    for(int i=LOG-1; i>=0; i--){
        if(!isanc(par[u][i], v))
            u=par[u][i];
    }
    return par[u][0];
}

void Init(int N, int A[], int B[], int D[]) {
    n=N;
    for(int i=0; i<N; i++){
        kaimini[A[i]].pb({B[i], D[i]});
        kaimini[B[i]].pb({A[i], D[i]});
    }
    dfs(0, 0, 0);
}

long long Query(int S, int X[], int T, int Y[]) {
    ll atb=LONG_LONG_MAX;

    for(int i=0; i<S; i++){
        int u=X[i];

        for(int j=0; j<T; j++){
            int v=Y[j];
            int lca=getlca(u, v);
            ll kop = att[u]+att[v]-2*att[lca];
            atb=min(atb, kop);
        }
    }

    return atb;
}

Compilation message (stderr)

factories.cpp:12:20: error: 'N' was not declared in this scope; did you mean 'NN'?
   12 | const int LOG=log2(N)+2;
      |                    ^
      |                    NN
factories.cpp:18:13: error: size of array 'par' is not an integral constant-expression
   18 | int par[NN][LOG];
      |             ^~~