Submission #1312998

#TimeUsernameProblemLanguageResultExecution timeMemory
1312998wangzhiyi33Dreaming (IOI13_dreaming)C++20
100 / 100
76 ms17956 KiB
#include "dreaming.h"
#include<bits/stdc++.h>
using namespace std;
#define ii pair<long long ,long long>
#define fir first
#define sec second
#define pb push_back
const int maxn=1e5;

vector<ii>adj[maxn+2];
bool vis[maxn+2];
ii mx[maxn+2];
int nd,jrk;

void dfs(int cur,int par,int tot){
    if(tot>jrk){
        jrk=tot,nd=cur;
    }
    for(auto x : adj[cur]){
        if(x.fir==par)continue;
        dfs(x.fir,cur,tot+x.sec);
    }
}

int brp[maxn+2];
vector<int>oo;

void cari(int cur,int par,int tot){
    vis[cur]=true;
    oo.pb(cur);
    brp[cur]=max(brp[cur],tot);
    for(auto x : adj[cur]){
        if(x.fir==par)continue;
        cari(x.fir,cur,tot+x.sec);
    }
}

int travelTime(int n, int m, int l, int a[], int b[], int t[]) {
    for(int q=0;q<m;q++){
        adj[a[q]].pb({b[q],t[q]});
        adj[b[q]].pb({a[q],t[q]});
    }
    vector<long long>apa;
    long long ans=0;

    for(int q=0;q<n;q++){
        if(vis[q])continue;
        nd=jrk=-1;
        dfs(q,-1,0);
        int awal=nd;
        nd=jrk=-1;
        dfs(awal,-1,0);
        int akh=nd;
        cari(awal,-1,0);
        ans=max(ans,(long long) brp[akh]);
        oo.clear();
        cari(akh,-1,0);

        int hmm=1e9;
        for(auto x : oo){
            hmm=min(hmm,brp[x]);
            
        }
        apa.pb(hmm);
    }
    sort(apa.rbegin(),apa.rend());

    if(apa.size()>1){
        
        ans=max(ans,apa[0]+apa[1]+l);
    }
    if(apa.size()>2){
        ans=max(ans,apa[2]+apa[1]+2*l);
    }

    return ans;
}

// signed main(){
//     int n,m,l;
//     cin>>n>>m>>l;
//     int a[n],b[n],t[n];
//     for(int q=0;q<m;q++){
//         cin>>a[q]>>b[q]>>t[q];
//     }
//     cout<<travelTime(n,m,l,a,b,t)<<endl;
// }
#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...