답안 #1010699

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1010699 2024-06-29T09:42:35 Z a_aguilo 악어의 지하 도시 (IOI11_crocodile) C++14
89 / 100
317 ms 55420 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;
        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.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;}



# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 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 0 ms 452 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 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 0 ms 452 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 2 ms 604 KB Output is correct
10 Correct 0 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 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 344 KB Output is correct
2 Correct 0 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 0 ms 452 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 2 ms 604 KB Output is correct
10 Correct 0 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 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 246 ms 49200 KB Output is correct
17 Correct 61 ms 13924 KB Output is correct
18 Correct 68 ms 15052 KB Output is correct
19 Correct 317 ms 55420 KB Output is correct
20 Correct 174 ms 41176 KB Output is correct
21 Correct 25 ms 6224 KB Output is correct
22 Incorrect 208 ms 38052 KB Output isn't correct
23 Halted 0 ms 0 KB -