Submission #411584

#TimeUsernameProblemLanguageResultExecution timeMemory
411584A_DRace (IOI11_race)C++14
21 / 100
29 ms2968 KiB
#include "race.h"
#include <bits/stdc++.h>
#define LL long long
#define ii pair<LL,LL>
#define F first
#define S second
using namespace std;
const int NN=1e3+100;
vector<ii> g[NN];
LL n,k,ans=9e18;
vector<int> vec;
void dfs(int u,int p,LL v,LL dep)
{
//    cout<<u<<" "<<p<<endl;
    if(v==k){
        ans=min(ans,dep);
//        for(auto x:vec)cout<<x<<" ";cout<<endl;
    }
    if(v>k)return;
    for(auto x:g[u]){
        if(x.F==p)continue;
        vec.push_back(x.F);
        dfs(x.F,u,v+x.S,dep+1);
        vec.pop_back();
    }
}
int best_path(int N, int K, int H[][2], int L[])
{
    ans=9e18;
    n=N;
    k=K;
  //  cout<<endl;
    for(int i=0;i<n-1;i++){
        int u=H[i][0];
        int v=H[i][1];
        int w=L[i];
    //    cout<<u<<" "<<v<<" "<<w<<endl;
        g[u].push_back({v,w});
        g[v].push_back({u,w});
    }
//    cout<<endl;
    for(int i=0;i<n;i++){
        vec.push_back(i);
        dfs(i,i,0,0);
        vec.pop_back();
    }
    if(ans==9e18)ans=-1;
    int ann=ans;
    return ann;
}

/*

11 12
0 1 3
0 2 4
2 3 5
3 4 4
4 5 6
0 6 3
6 7 2
6 8 5
8 9 6
8 10 7


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