제출 #1190937

#제출 시각아이디문제언어결과실행 시간메모리
1190937zh_h악어의 지하 도시 (IOI11_crocodile)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> #define pb push_back #define lint long long int using namespace std; int _n, _m, _k; vector<bool> is_exit; vector<int> dp; vector<vector<pair<int, int>>> edge; void dfs(int v, int p) { cout << v << " " << p << endl; if (is_exit[v]) {cout << "hi " << endl; dp[v] = 0; return;} int min1=1e9, min2=1e9; for (auto [child, w] : edge[v]) { if (child == p) continue; dfs(child, v); if (dp[child]+w <= min1) { min2 = min1; min1 = dp[child]+w; } else if (dp[child]+w <= min2) { min2 = dp[child]+w; } } dp[v] = min2; } int travel_plan (int n, int m, int r[][2], int l[], int k, int p[]) { _n = n; _m = m; _k = k; edge.resize(n); for (int i = 0; i < m; i ++) { edge[r[i][0]].pb({r[i][1], l[i]}); edge[r[i][1]].pb({r[i][0], l[i]}); } is_exit.resize(n, false); for (int i = 0; i < k; i ++) { is_exit[p[i]] = true; } dp.resize(n, 1e9); dfs(0, -1); for (int i = 0; i < n; i ++) { cout << dp[i] << " "; } cout << endl; return dp[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...