Submission #1130442

#TimeUsernameProblemLanguageResultExecution timeMemory
1130442akzytrRace (IOI11_race)C++17
21 / 100
20 ms1668 KiB
#include <bits/stdc++.h>
#define ve vector
#define ar array 
#define pb push_back
#define ins insert

#define endl '\n'
#define ll long long
using namespace std;

const int MXN = 1e3+1;
int K;
ve<pair<int, ll>> adj[MXN];

int dfs1(int x, int p, int need){
    if(need == 0){
        return 1;
    }
    if(need < 0){
        return 1e9;
    }
    int ans = 1e9;
    for(auto [i, c] : adj[x]){
        if(i != p){
            ans = min(ans, 1 + dfs1(i, x, need-c));
        }
    }
    return ans;
}

int dfs2(int x, int p){
    int ans = 1e9;
    for(auto [i, c] : adj[x]){
        if(i != p){
            ans = min(ans, dfs1(i, x, K-c));
        }
    }
    return ans;
}

int best_path(int N, int k, int H[][2], int L[]){
    K = k;
    for(int i = 0; i < N-1; i++){
        adj[H[i][0]].pb({H[i][1], L[i]});
        adj[H[i][1]].pb({H[i][0], L[i]});
    }
    int ans = 1e9;
    for(int i = 0; i < N; i++){
        ans = min(ans, dfs2(i, -1));
    }
    if(ans == 1e9){
        return -1;
    }
    else{
        return ans;
    }
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...