Submission #1212389

#TimeUsernameProblemLanguageResultExecution timeMemory
1212389nrg_studio꿈 (IOI13_dreaming)C++20
47 / 100
100 ms16708 KiB
#include <bits/stdc++.h> #include "dreaming.h" using namespace std; #define ll long long #define pb push_back #define mp make_pair #define pii pair<int,int> #define f first #define s second #define chmin(a, b) a = min(a,b) #define chmax(a, b) a = max(a,b) #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define F0R(i, a) for (int i = 0; i < (a); i++) #define all(x) x.begin(),x.end() #define vec vector const int MAX_N = 1e5; vec<pii> adj[MAX_N]; int dist[MAX_N]; bool vis[MAX_N]; pii furthest(int cur, int par=-1, int len=0) { vis[cur] = true; pii mx = {len,cur}; for (auto[x,w] : adj[cur]) { if (x!=par) { chmax(mx,furthest(x,cur,len+w)); } } return mx; } int travelTime(int n, int m, int l, int a[], int b[], int t[]) { for (int i=0;i<m;i++) { adj[a[i]].pb({b[i],t[i]}); adj[b[i]].pb({a[i],t[i]}); } int comps = n-m; while (comps!=1) { memset(vis,0,sizeof(vis)); memset(dist,-1,sizeof(dist)); int last = 0; for (int i=0,c=0;i<n;i++) { if (!vis[i]) { int d1 = furthest(i).s, d2 = furthest(d1).s; queue<pair<int,pii>> q; pii cent = {INT_MAX,0}; q.push({d1,{-1,0}}); q.push({d2,{-1,0}}); while (q.size()) { auto[cur,z] = q.front(); q.pop(); auto[par,len] = z; if (dist[cur]!=-1) { chmin(cent,mp(max(len,dist[cur]),cur)); } dist[cur] = len; for (auto[x,w] : adj[cur]) { if (x!=par) { q.push({x,{cur,len+w}}); } } } if ((c++)&1) { adj[last].pb({cent.s,l}); adj[cent.s].pb({last,l}); } last = cent.s; } } comps /= 2; } return furthest(furthest(0).s).f; } /* int main() { ios::sync_with_stdio(false); cin.tie(0); int n,m,l;cin >> n >> m >> l; int a[m], b[m], t[m]; F0R(i,n) {cin >> a[i] >> b[i] >> t[i];} cout << travelTime(n,m,l,a,b,t); }*/
#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...