Submission #1010693

# Submission time Handle Problem Language Result Execution time Memory
1010693 2024-06-29T09:38:33 Z a_aguilo Crocodile's Underground City (IOI11_crocodile) C++14
89 / 100
303 ms 63096 KB
#include "crocodile.h"
#include <bits/stdc++.h>
//#include "crocodile.h"
#define vi vector<int>
#define vc vector
#define pi pair<int,int>
using namespace std;

vc<vc<pi>> edg; // Edges, aka the corridors coming out from each room
vc<pi> dis; // The two minimum distances found between 2 nodes. The fastest route will just be used to calculate the second fastest, which is the oke that will be used to obtain the other distances
int fpath = -1e9-7; // Fastest path
int u, c; // Amazing the amount of situations when a node and a cost can be useful

void dijkstra(int k, int p[]){
    priority_queue<pi> tv; // To Visit, not TeleVision or To Vandalize
    for(int i = 0; i < k; i++){
        tv.push({0,p[i]});
        dis[p[i]].first = 0;}
    while(!tv.empty()){
        u = tv.top().second; // The node being explored right now
        c = tv.top().first; // The cost to get to u
        tv.pop();
        
        if(dis[u].second>c){continue;} // If this path is worse then why bother
        if(u == 0){
            fpath = max(fpath, c);
            continue;}
            
        for(pi p : edg[u]){     // p.first = cost, p.second = node the path leads to
          if(p.second != u and dis[p.second].first != 0){
            if (p.first + c > dis[p.second].second){    // If this is path you've found is fastest than the second fastest one...
                if (p.first + c > dis[p.second].first){     // And than the fastest one...
                    dis[p.second].second = dis[p.second].first;     // Then the previously fastest one becomes the second fastest one...
                    dis[p.second].first = p.first + c;}     // This new path becomes the fastest!
                    
                else{ // But if it's not fastest than the fastest one...
                    dis[p.second].second = p.first + c;}
                    
                tv.push({dis[p.second].second, p.second});
            

            }
          }
        }
    }
}



int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){
    edg = vc<vc<pi>>(N);
    for(int i = 0; i < M; i++){
        edg[R[i][0]].push_back({-L[i],R[i][1]});
        edg[R[i][1]].push_back({-L[i],R[i][0]});}
    
    dis = vc<pi>(N,{-1e9-7,-1e9-7});  
        
    dijkstra(K,P);

return -fpath;}



# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 568 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 568 KB Output is correct
9 Correct 2 ms 600 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 2 ms 860 KB Output is correct
13 Correct 2 ms 1000 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 568 KB Output is correct
9 Correct 2 ms 600 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 2 ms 860 KB Output is correct
13 Correct 2 ms 1000 KB Output is correct
14 Correct 1 ms 344 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 237 ms 56824 KB Output is correct
17 Correct 56 ms 14996 KB Output is correct
18 Correct 69 ms 16340 KB Output is correct
19 Correct 303 ms 63096 KB Output is correct
20 Correct 171 ms 47188 KB Output is correct
21 Correct 26 ms 6492 KB Output is correct
22 Incorrect 188 ms 44992 KB Output isn't correct
23 Halted 0 ms 0 KB -