Submission #1014081

# Submission time Handle Problem Language Result Execution time Memory
1014081 2024-07-04T10:31:18 Z ZanP Dreaming (IOI13_dreaming) C++17
Compilation error
0 ms 0 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
const int mxN = 1e6;
const int INF = 1e9;
int n, m, l;
vector<pair<int, int>> pov[mxN];
int td[mxN];
bool vis[mxN];
int maxd = 0, cnt = 0;
pair<int, int> dfs(int u, int par) {
    pair<int, int> ans = { 0,u };
    vis[u] = true;
    for (auto p : pov[u]) {
        int v = p.first;
        int c = p.second;
        if (v != par) {
            pair<int, int> q = dfs(v, u);
            q.first += c;
            ans = max(ans, q);
        }
    }
    return ans;
}

int opt = INF;
int opt_dfs(int u, int tar, int d, int par)
{
    if (u == tar) {
        opt = d;
        return d;
    }
    int ans = INF;
    for (auto p : pov[u]) {
        int v = p.first;
        int c = p.second;
        if (v != par) {
            int dis = opt_dfs(v, tar, d, u) - c;
            ans = min(ans, dis);
        }
    }
    opt = min(max(ans,d-ans), opt);
    return ans;
}

int travelTime(int N, int M, int L, int A[], int B[], int T[]) {
    int n = N; int m = M; int l = L;
    for (int i = 0; i < m; i++) {
        int a = A[i], b = B[i], c = T[i];
        pov[a].push_back({ b,c });
        pov[b].push_back({ a,c });
    }
    memset(vis, 0, n);
    for (int i = 0; i < n; i++) {
        if (!vis[i] && pov[i].size() <= 1) {
            pair<int, int> p = dfs(i, -1);
            pair<int, int> q = dfs(p.second, -1);
            maxd = q.first;
            opt = INF;
            opt_dfs(p.second, q.second, q.first, -1);
            td[cnt] = -opt;
            cnt++;
        }
    }
    if (cnt == 1) {
        return maxd;
    }
    sort(td, td + cnt);
    int ans = l - td[0] - td[1];
    if (cnt > 2) { ans = max(ans, 2 * l - td[1] - td[2]); }
    return ans;
}

int main()
{
    cin >> n >> m >> l;
    for (int i = 0; i < m; i++) {
        int a, b, c; cin >> a >> b >> c;
        pov[a].push_back({ b,c });
        pov[b].push_back({ a,c });
    }
    memset(vis, 0, n);
    for (int i = 0; i < n; i++) {
        if (!vis[i] && pov[i].size() <= 1) {
            pair<int, int> p = dfs(i, -1);
            pair<int, int> q = dfs(p.second, -1);
            maxd = q.first;
            opt = INF;
            opt_dfs(p.second, q.second, q.first, -1);
            td[cnt] = -opt;
            cnt++;
        }
    }
    if (cnt == 1) {
        cout << maxd;
    }
    sort(td, td + cnt);
    int ans = l - td[0] - td[1];
    if (cnt > 2) { ans = max(ans, 2 * l - td[1] - td[2]); }
    cout << ans;
    return 0;
}

Compilation message

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