#include <bits/stdc++.h>
#include "dreaming.h"
using namespace std;
#define mod 1000000007
#define maxn 200005
#define f first
#define s second
#define ll long long
#define pb(x) push_back(x)
vector<pair<int, int>> g[maxn];
bool a[maxn];
long long k;int i1;
int dfs(int u, int p){
    if(g[u].size()<=1){
        return u;
    }
    for(auto i:g[u]){
        if(i.f!=p){
            return dfs(i.f, u);
        }
    }
}
long long dfs2(int u, int p, long long sum){
    long long mn=0;
    a[u]=1;
    for(auto i:g[u]){
        if(i.f!=p)
        mn=max(mn, dfs2(i.f, u, sum+i.s)+i.s);
    }
    if(max(mn, sum)<k){
        i1=u;
        k=max(mn, sum);
    }
    return mn;
}
int travelTime(int N,int M,int L,int A[],int B[],int T[]){
    for(int i=0; i<M; i++){
        g[A[i]].push_back({B[i], T[i]});
        g[B[i]].push_back({A[i], T[i]});
    }
    vector<long long> v;
    for(int i=0; i<M; i++){
        if(!a[i]){
            k=INT64_MAX;
            int u=dfs(i, i);
            dfs2(u, u, 0);
            v.push_back(k);
        }
    }
    sort(v.begin(), v.end(), greater<>());
    if(v.size()>2){
        return v[0]+v[1]+L;
    }else{
        return max(v[0]+v[1]+L, v[1]+v[2]+L*2);
    }
}
Compilation message (stderr)
dreaming.cpp: In function 'int dfs(int, int)':
dreaming.cpp:22:1: warning: control reaches end of non-void function [-Wreturn-type]
   22 | }
      | ^| # | 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... |