# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
740522 | rominanafu | Crocodile's Underground City (IOI11_crocodile) | C++11 | 4 ms | 4464 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define pii pair<int,int>
#define pll pair<ll,ll>
using namespace std;
typedef long long ll;
vector<pii > edge[100005];
pll tiempo[100005];
bool vis[100005];
ll tiempo_min(int act) {
if (vis[act])
return -1;
if (tiempo[act].second != -1)
return tiempo[act].second;
ll r;
vis[act] = true;
for(auto a:edge[act]) { /// a.first = sig sala, a.second = tiempo
r = tiempo_min(a.first);
if (r == -1)
continue;
r += a.second;
if (tiempo[act].first == -1 || r < tiempo[act].first) {
tiempo[act].second = tiempo[act].first;
tiempo[act].first = r;
} else if (tiempo[act].second == -1 || r < tiempo[act].second) {
tiempo[act].second = r;
}
}
vis[act] = false;
return tiempo[act].second;
}
int travel_plan(int n, int m, int R[][2], int L[], int k, int P[])
{
memset(tiempo, -1LL, sizeof(tiempo));
int a, b, t;
for(int i=0; i<m; i++) {
a = R[i][0];
b = R[i][1];
t = L[i];
edge[a].push_back({b, t});
edge[b].push_back({a, t});
}
for(int i=0; i<k; i++) {
a = P[i];
tiempo[a].first = 0;
tiempo[a].second = 0;
}
ll resp = tiempo_min(0);
return resp;
}
/**
4 4 1
0 1 9
0 3 10
1 2 40
2 3 100
2
**/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |