답안 #1002306

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1002306 2024-06-19T12:19:31 Z 3lektra 악어의 지하 도시 (IOI11_crocodile) C++14
89 / 100
282 ms 63176 KB
#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;
        dis[p[i]].second = 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.first + c > dis[p.second].second){    
                if (p.first + c > dis[p.second].first){ 
                    dis[p.second].second = dis[p.second].first;   
                    dis[p.second].first = p.first + c;} 
                    
                else{
                    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;}

# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 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 540 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 452 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 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 540 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 452 KB Output is correct
9 Correct 1 ms 604 KB Output is correct
10 Correct 1 ms 448 KB Output is correct
11 Correct 1 ms 508 KB Output is correct
12 Correct 2 ms 860 KB Output is correct
13 Correct 2 ms 860 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 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 540 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 452 KB Output is correct
9 Correct 1 ms 604 KB Output is correct
10 Correct 1 ms 448 KB Output is correct
11 Correct 1 ms 508 KB Output is correct
12 Correct 2 ms 860 KB Output is correct
13 Correct 2 ms 860 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 245 ms 57012 KB Output is correct
17 Correct 58 ms 14800 KB Output is correct
18 Correct 67 ms 16332 KB Output is correct
19 Correct 282 ms 63176 KB Output is correct
20 Correct 163 ms 47408 KB Output is correct
21 Correct 24 ms 6492 KB Output is correct
22 Incorrect 175 ms 44748 KB Output isn't correct
23 Halted 0 ms 0 KB -