#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |