# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
743755 | rominanafu | Crocodile's Underground City (IOI11_crocodile) | C++11 | 3 ms | 3412 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];
pii tiempo[100005];
priority_queue<pii > q;
void tiempo_min() {
pii a;
int s;
while (!q.empty()) {
a = q.top();
q.pop();
for(auto v:edge[a.second]) {
s = (a.first * (-1)) + v.second;
if (tiempo[v.first].first == -1) {
tiempo[v.first].first = s;
} else if (s < tiempo[v.first].first) {
tiempo[v.first].second = tiempo[v.first].first;
tiempo[v.first].first = s;
q.push({tiempo[v.first].second * (-1), v.first});
} else if (s < tiempo[v.first].second || tiempo[v.first].second == -1) {
tiempo[v.first].second = s;
q.push({s * (-1), v.first});
}
}
}
}
int travel_plan(int n, int m, int R[][2], int L[], int k, int P[])
{
memset(tiempo, -1, 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;
q.push({0, a});
}
tiempo_min();
return tiempo[0].second;
}
/**
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... |