Submission #1146543

#TimeUsernameProblemLanguageResultExecution timeMemory
1146543zhasynDreaming (IOI13_dreaming)C++20
40 / 100
1093 ms10984 KiB
#include "dreaming.h" #include <bits/stdc++.h> #define pb push_back #define pf push_front using namespace std; #define F first #define S second typedef long long ll; #define pii pair <int, int> #define pll pair <ll, ll> typedef long double ld; const ll N = 1e5 + 100, M = 4096 + 10, len = 21, inf = 1e18; const ll mod = 1e9 + 7; vector <pii> q[N]; int mx, cur[N], p[N], sz[N], ans; void dfs(int v, int pred, int sum){ mx = max(mx, sum); for(auto u : q[v]){ if(u.F == pred) continue; dfs(u.F, v, sum + u.S); } } int gt(int x){ if(p[x] == x) return x; return p[x] = gt(p[x]); } void addthem(int a, int b){ a = gt(a); b = gt(b); if(a != b){ if(sz[b] > sz[a]) swap(a, b); sz[a] += sz[b]; p[b] = a; cur[a] = min(cur[a], cur[b]); } } int travelTime(int n, int m, int l, int a[], int b[], int t[]) { for(int i = 0; i < m; i++){ q[a[i]].pb({b[i], t[i]}); q[b[i]].pb({a[i], t[i]}); } for(int i = 0; i < n; i++){ mx = 0; dfs(i, -1, 0); cur[i] = mx; sz[i] = 1; p[i] = i; ans = max(ans, mx); } for(int i = 0; i < n; i++){ for(auto u : q[i]){ addthem(u.F, i); } } vector <int> vec; for(int i = 0; i < n; i++){ if(p[i] == i){ vec.pb(cur[i]); //cout << cur[i] << endl; } } sort(vec.begin(), vec.end()); int ss = (int)vec.size(); if((int)vec.size() >= 2) ans = max(ans, vec[ss - 1] + vec[ss - 2] + l); if((int)vec.size() >= 3) ans = max(ans, vec[ss - 3] + vec[ss - 2] + 2 * l); return ans; } // int main() { // ios::sync_with_stdio(false); // cin.tie(NULL); // int n, m, l; // cin >> n >> m >> l; // int a[m], b[m], x[m]; // for(int i = 0; i < m; i++){ // cin >> a[i] >> b[i] >> x[i]; // } // cout << travelTime(n, m, l, a, b, x); // 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...