Submission #337300

#TimeUsernameProblemLanguageResultExecution timeMemory
337300r_v_nCrocodile's Underground City (IOI11_crocodile)C++14
0 / 100
11 ms5228 KiB
using namespace std; #include <bits/stdc++.h> #define ll long long int dp[100001]; int n; int m, k; vector<pair<int, int>> adj[100001]; map<int, int> is; void dfs(int v, int p = -1) { if (adj[v].size() == 1) { if (is[v]) dp[v] = 0; else dp[v] = 1e9; return; } vector<int> store; for (auto it : adj[v]) { if (it.first == p) continue; dfs(it.first, v); store.push_back(dp[it.first] + it.second); } sort(store.begin(), store.end()); dp[v] = store[1]; } // void solve() // { // cin >> n >> m >> k; // for (int i = 0; i <= n; i++) // { // adj[i].clear(); // dp[i] = 0; // } // is.clear(); // for (int i = 0; i < m; i++) // { // int a, b, c; // cin >> a >> b >> c; // adj[a].push_back({b, c}); // adj[b].push_back({a, c}); // } // for (int i = 0; i < k; i++) // { // int a; // cin >> a; // is[a] = 1; // } // dfs(0); // cout << dp[0] << endl; // } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { for (int i = 0; i < M; i++) { adj[R[i][0]].push_back(make_pair(R[i][1], L[i])); adj[R[i][1]].push_back(make_pair(R[i][0], L[i])); } map<int, int> f; vector<int> d(n + 1, 1e9); vector<int> visited(n + 1, 0); priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q; for (int i = 0; i < K; i++) { //is[P[i]] = 1; q.push({0, P[i]}); visited[P[i]] = 1; } while (!q.empty()) { int u = q.top().second; int cost = q.top().first; q.pop(); if (visited[u] == 1) { is[u] = 1; d[u] = cost; for (int i = 0; i < (int)adj[u].size(); i++) { int v = adj[u][i].first; int cst = adj[u][i].second; if (!is[v]) q.push(make_pair((cost + cst), v)); } } visited[u]++; } return d[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...