Submission #1312725

#TimeUsernameProblemLanguageResultExecution timeMemory
1312725wangzhiyi33Dreaming (IOI13_dreaming)C++20
Compilation error
0 ms0 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];

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

long long brp;

void reroot(long long cur,long long par,long long jrk){
    vis[cur]=true;
    ii sblm=mx[cur];
    if(-1!=par){
        long long baru=mx[par].fir+jrk;
        if(mx[par].fir-jrk==mx[cur].fir){
            baru=mx[par].sec+jrk;
        }

        if(mx[cur].fir<baru){
            mx[cur].sec=mx[cur].fir;
            mx[cur].fir=baru;
        }
        else if(mx[cur].sec<baru){
            mx[cur].sec=baru;
        }
    }
    brp=min(brp,mx[cur].fir);

    for(auto x : adj[cur]){
        if(x.fir==par)continue;
        reroot(x.fir,cur,x.sec);
    }
    mx[cur]=sblm;
}

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;

    for(int q=0;q<n;q++){
        if(vis[q])continue;
        dfs(q,-1);
        brp=1e18;
        reroot(q,-1,0);
        apa.pb(brp);
    }
    sort(apa.rbegin(),apa.rend());

    long long ans=apa[0];
    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;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cckE5j4f.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/ccVHgETU.o:dreaming.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status