답안 #880583

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
880583 2023-11-29T17:03:28 Z Mr_Husanboy 꿈 (IOI13_dreaming) C++17
0 / 100
33 ms 11356 KB
#include "dreaming.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
const ll infl = 1e18;
template<typename T>
int len(T &a){
    return a.size();
}


int travelTime(int n, int m, int L, int a[], int b[], int t[]) {
    vector<vector<pair<int,int>>> g(n);
    for(int i = 0; i < m; i ++){
        g[a[i]].emplace_back(b[i], t[i]);
        g[b[i]].emplace_back(a[i], t[i]);
    }


    vector<ll> disa(n);
    vector<bool> vis(n);
    int mx = 0;

    auto dfs = [&](auto &dfs, int i, int p = -1)->void{
        vis[i] = 1;
        for(auto [u, w] : g[i]){
            if(u == p) continue;
            disa[u] = disa[i] + w;
            dfs(dfs, u, i);
        }
        if(disa[mx] < disa[i]) mx = i;
    };
    ll mxx = infl;

    auto dfs2 = [&](auto &dfs2, int i, int p = -1, ll d = 0)->void{
        vis[i] = 1;
        mxx = min(mxx, max(d, disa[i]));
        for(auto [u, w] : g[i]){
            if(u == p) continue;
            dfs2(dfs2, u, i, d + w);
        }
    };
    ll ans = infl;
    vector<ll> dis;
    for(int i = 0; i < n; i ++){
        if(vis[i]) continue;
        mx = i;
        mxx = infl;
        dfs(dfs, i);
        disa[mx] = 0;
        dfs(dfs, mx);
        dfs2(dfs2, mx);
        dis.push_back(mxx);
    }
    if(len(dis) == 1){
        return dis[0];
    }
    if(len(dis) == 2){
        return dis[0] + dis[2] + L;
    }
    sort(dis.begin(), dis.end());
    n = dis.size();
    ans = max({dis[n - 1] + dis[n - 2] + L, dis[n - 1] + dis[n - 3] + 2 * L});
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 11356 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 11356 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 6624 KB Output is correct
2 Incorrect 15 ms 6616 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 11356 KB Output isn't correct
2 Halted 0 ms 0 KB -