Submission #735669

# Submission time Handle Problem Language Result Execution time Memory
735669 2023-05-04T12:46:20 Z europium Crocodile's Underground City (IOI11_crocodile) C++17
0 / 100
1 ms 212 KB
#include "crocodile.h"
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <numeric>
#include <cmath>
#include <iterator>
#include <set>
#include <map>
#include <math.h>
#include <iomanip>
#include <unordered_set>
#include <queue>
#include <climits>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
vector<vector<pair<int,int>>> adj;
vector<int> dp;

void dfs(int u, int p){
    for (auto [v, w] : adj[u]){
        if (v != p) dfs(v, u);
    }

    int min1 = INT_MAX, min2 = INT_MAX;

    for (auto [v, w] : adj[u]){
        if (v == p) continue;

        if (w < min1){
            min2 = min1;
            dp[u] = dp[v] + w;
            min1 = w;
        }
        else if (min1 < w && w < min2){
            min2 = w;
            dp[u] = dp[v] + w;
        }
    }
}

int travel_plan(int n, int m, int r[][2], int l[], int k, int p[])
{
    // n - number of nodes
    // m - number of edges
    // r[i][0] and r[i][1] - edges of u and v
    // l[i] - time taken to cross edge i
    // k - number of exit chambers
    // p - array of exit chambers

    adj.resize(n);
    dp.resize(n);

    for (int i = 0; i < m; i++){
        int u, v, w;
        u = r[i][0];
        v = r[i][1];
        w = l[i];

        adj[u].push_back({v, w});
        adj[v].push_back({u, w});
    }

    dfs(0, -1);

    return dp[0];
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -