제출 #1275369

#제출 시각아이디문제언어결과실행 시간메모리
1275369rafsanamin2020경주 (Race) (IOI11_race)C++20
21 / 100
17 ms1668 KiB
#include "race.h" #include <bits/stdc++.h> using namespace std; int MX = 1200; vector<vector<pair<int, int>>> adj(MX); vector<bool> visited(MX, false); pair<bool, int> dfs(int x, int K, int l = 0, int nh = 0) { if (visited[x]) { return {false, nh}; } if (l == K) { return {true, nh}; } visited[x] = true; int poss = false, rnh = 1E9; for (pair<int, int> v : adj[x]) { pair<bool, int> ret = dfs(v.first, K, l + v.second, nh + 1); // cout << x << " " << y << " " << ret.first << " " << ret.second << "__________" << "\n"; if (ret.first) { poss = true; rnh = min(ret.second, rnh); } } return {poss, rnh}; } int best_path(int N, int K, int H[][2], int L[]) { for (int i = 0; i < N - 1; i++) { adj[H[i][0]].push_back({H[i][1], L[i]}); adj[H[i][1]].push_back({H[i][0], L[i]}); } int ans = -1; for (int i = 0; i < N; i++) { visited = vector<bool>(MX, false); pair<bool, int> ret = dfs(i, K); // cout << i << " " << j << " " << ret.first << " " << ret.second << " \n"; if (ret.first) { if (ans == -1) { ans = ret.second; } else { ans = min(ans, ret.second); } } } 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...