Submission #735669

#TimeUsernameProblemLanguageResultExecution timeMemory
735669europiumCrocodile's Underground City (IOI11_crocodile)C++17
0 / 100
1 ms212 KiB
#include "crocodile.h" #include <iostream> #include <vector> #include <algorithm> #include <string> #include <numeric> #include <cmath> #include <iterator> #include <set> #include <map> #include <math.h> #include <iomanip> #include <unordered_set> #include <queue> #include <climits> #include <stdio.h> #include <stdlib.h> using namespace std; vector<vector<pair<int,int>>> adj; vector<int> dp; void dfs(int u, int p){ for (auto [v, w] : adj[u]){ if (v != p) dfs(v, u); } int min1 = INT_MAX, min2 = INT_MAX; for (auto [v, w] : adj[u]){ if (v == p) continue; if (w < min1){ min2 = min1; dp[u] = dp[v] + w; min1 = w; } else if (min1 < w && w < min2){ min2 = w; dp[u] = dp[v] + w; } } } int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { // n - number of nodes // m - number of edges // r[i][0] and r[i][1] - edges of u and v // l[i] - time taken to cross edge i // k - number of exit chambers // p - array of exit chambers adj.resize(n); dp.resize(n); for (int i = 0; i < m; i++){ int u, v, w; u = r[i][0]; v = r[i][1]; w = l[i]; adj[u].push_back({v, w}); adj[v].push_back({u, w}); } dfs(0, -1); return dp[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...