Submission #1275366

#TimeUsernameProblemLanguageResultExecution timeMemory
1275366rafsanamin2020경주 (Race) (IOI11_race)C++20
9 / 100
3095 ms1576 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 y, int K, int l = 0, int nh = 0) { if (visited[x]) { return {false, nh}; } if (x == y && l == K) { return {true, nh}; } visited[x] = true; for (pair<int, int> v : adj[x]) { pair<bool, int> ret = dfs(v.first, y, K, l + v.second, nh + 1); // cout << x << " " << y << " " << ret.first << " " << ret.second << "__________" << "\n"; if (ret.first) { return {true, ret.second}; } } return {false, nh}; } 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++) { for (int j = i + 1; j < N; j++) { visited = vector<bool>(MX, false); pair<bool, int> ret = dfs(i, j, 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...