제출 #380434

#제출 시각아이디문제언어결과실행 시간메모리
380434ruadhanTraffic (IOI10_traffic)C++14
0 / 100
22 ms31596 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; const ll INF = 2e12 + 2; const int MAXN = 1e6 + 1; ll congestion = 0; // vector<int> adj[MAXN]; pair<int, vector<int>> adj[MAXN]; // population, adjacent cities vector<int> population; vector<bool> visited; void dfs(int node) { // cout << ", dfs on " << node << "\t"; for (auto u : adj[node].second) { if (!visited[u]) { // cout << ", processing " << u << " "; // congestion += population[u]; congestion += adj[u].first; // cout << " it has weight " << adj[u].first << ", "; visited[u] = true; dfs(u); } } // cout << endl; } // int LocateCentre(int N, vector<int> P, vector<int> S, vector<int> D) int LocateCentre(int N, int P[], int S[], int D[]) { ll ans = INF; // population = P; // population.insert(P, P + N); for (int i = 0; i < N - 1; i++) { adj[i].first = P[i]; adj[S[i]].second.push_back(D[i]); adj[D[i]].second.push_back(S[i]); } adj[N - 1].first = P[N - 1]; // for (int i = 0; i < N; i++) // { // cout << adj[i].first << " "; // } // for (int i = 0; i < N; i++) // { // cout << "i = " << i << ", "; // for (auto u : adj[i].second) // cout << u << " "; // cout << endl; // } for (int i = 0; i < N; i++) // try city i { // cout << "i = " << i << ", "; visited.assign(N, false); visited[i] = true; ll currentWorst = 0; for (auto u : adj[i].second) // all outgoing edges have different congestion { congestion = adj[u].first; visited[u] = true; dfs(u); // cout << congestion << " "; currentWorst = max(currentWorst, congestion); } ans = min(ans, currentWorst); // cout << endl; } return ans; } // int main() // { // // int n = 5; // // vector<int> p = {10, 10, 10, 20, 20}; // // vector<int> s = {0, 1, 2, 3}; // edges // // vector<int> d = {2, 2, 3, 4}; // // cout << LocateCentre(n, p, s, d) << endl; // ios::sync_with_stdio(false); // cin.tie(NULL); // int n; // cin >> n; // // vector<int> p(n), s(n - 1), d(n - 1); // int p[n], s[n - 1], d[n - 1]; // for (auto &x : p) // cin >> x; // for (int i = 0; i < n - 1; i++) // cin >> s[i] >> d[i]; // // cout << n << endl; // // for (int i = 0; i < n; i++) // // cout << p[i] << " "; // // cout << endl; // // for (int i = 0; i < n - 1; i++) // // cout << s[i] << " " << d[i] << endl; // cout << LocateCentre(n, p, s, d) << endl; // return 0; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...