# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
337014 | 2020-12-17T21:36:19 Z | r_v_n | Crocodile's Underground City (IOI11_crocodile) | C++14 | 0 ms | 0 KB |
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]].pb(mp(R[i][1], L[i])); adj[R[i][1]].pb(mp(R[i][0], L[i])); } for(int i=0;<K;i++) { is[P[i]]=1; } dfs(0); return dp[0]; }