제출 #384039

#제출 시각아이디문제언어결과실행 시간메모리
384039MODDI경주 (Race) (IOI11_race)C++14
21 / 100
3021 ms10092 KiB
#include "race.h" #include <bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define vi vector<int> #define vl vector<ll> #define mp make_pair #define pb push_back #define MAX_N 500000 using namespace std; vector<pii> G[200000]; int K; bool vis[200000]; ll min(ll a, ll b){ if(a > b) return b; return a; } int best = 1e9; void rec(int node, int cnt_nodes, int path, int parent){ if(path == K){ best = min(best, cnt_nodes); return; } if(cnt_nodes >= best || path > K) return; for(auto next : G[node]){ if(next.first != parent){ if(path + next.second == K) best = min(best, cnt_nodes + 1); else if(cnt_nodes + 1 >= best || path + next.second > K ) continue; else rec(next.first, cnt_nodes + 1, path + next.second, node); } } } int best_path(int n, int k, int h[][2], int l[]) { K = k; for(int i = 0; i < n-1; i++){ G[h[i][0]].pb(mp(h[i][1], l[i])); G[h[i][1]].pb(mp(h[i][0], l[i])); } for(int i = 0; i < n; i++) rec(i, 0, 0, -1); if(best == 1e9) return -1; return best; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...