| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 984885 | IUA_Hasin | 사이버랜드 (APIO23_cyberland) | C++17 | 50 ms | 24156 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cyberland.h"
#include <bits/stdc++.h>
 
#define endl                                "\n"
#define yeap                                cout<<"YES"<<endl
#define nope                                cout<<"NO"<<endl
#define ll                                  long long
#define ld                                  long double
 
using namespace std; 
const ll M = 3e5+5;
const ll INF = 5e16+69;
vector<ll> ind0;
vector<pair<ll, ll>> extra[M];
vector<pair<ll, ll>> graph[M];
vector<ll> dist(M, INF);
ll vis[M];
void dijkstra(ll source){
    set<pair<ll, ll>> s;
    s.insert({0, source});
    dist[source] = 0;
    while(s.size()>0){
        auto node = *s.begin();
        ll v = node.second;
        ll v_dist = node.first;
        s.erase(s.begin());
        if(vis[v]==0){
            for(auto child : graph[v]){
                ll v2 = child.first;
                ll wt = child.second;
                if((dist[v]+wt)<(dist[v2])){
                    dist[v2] = dist[v]+wt;
                    s.insert({dist[v2], v2});
                }
            }
            vis[v] = 1;
        }
    }
    
}
double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) {
    for(int i=0; i<=N; i++){
        extra[i].clear();
        graph[i].clear();
        dist[i] = INF;
        vis[i] = 0;
    }
    ind0.clear();
    for(int i=0; i<x.size(); i++){
        ll a = x[i];
        ll b = y[i];
        ll wt = c[i];
        if(a!=H && b!=H){
            graph[a].push_back({b, wt});
            graph[b].push_back({a, wt});
        } else {
            extra[a].push_back({b, wt});
            extra[b].push_back({a, wt});
        }
    }
    //
    // for(int i=0; i<N; i++){
    //     for(int j=0; j<graph[i].size(); j++){
    //         cout << graph[i][j].first << " " << graph[i][j].second << endl;
    //     }
    //     cout<<endl;
    //}
    //okay
    //
    // for(int i=0; i<N; i++){
    //     for(int j=0; j<extra[i].size(); j++){
    //         cout << extra[i][j].first << " " << i<< endl;
    //     }
    //     cout<<endl;
    // }
    //okay
    
    for(int i=0; i<arr.size(); i++){
        if(arr[i]==0){
            ind0.push_back(i);
        }
    }
    //
    // for(int i=0; i<ind0.size(); i++){
    //     cout << ind0[i] << " ";
    // }
    // cout<<endl;
    //okay
    dijkstra(0);
    vector<ll> possibleind0;
    for(int i=0; i<ind0.size(); i++){
        ll a = ind0[i];
        if(dist[a]!=INF){
            possibleind0.push_back(a);
        }
    }
    //
    // for(int i=0; i<N; i++){
    //     cout << dist[i] << " ";
    // }
    // cout<<endl;
    //okay
    //
    // for(int i=0; i<possibleind0.size(); i++){
    //     cout << possibleind0[i] << " ";
    // }
    // cout<<endl;
    //okay
    for(int i=0; i<=N; i++){
        for(int j=0; j<extra[i].size(); j++){
            graph[i].push_back(extra[i][j]);
        }
    }
    //
    // for(int i=0; i<N; i++){
    //     for(int j=0; j<graph[i].size(); j++){
    //         cout << graph[i][j].first << " " << graph[i][j].second << endl;
    //     }
    //     cout<<endl;
    // }
    //okay
    for(int i=0; i<=N; i++){
        //graph[i].clear();
        dist[i] = INF;
        vis[i] = 0;
    }
    dijkstra(0);
    //
    // for(int i=0; i<N; i++){
    //     cout << dist[i] << " ";
    // }
    // cout<<endl;
    //
    
    ll ans = dist[H];
    if(dist[H]==INF){
        return -1;
    } else {
        for(int i=0; i<=N; i++){
            //graph[i].clear();
            dist[i] = INF;
            vis[i] = 0;
        }
        dijkstra(H);
        //ans = INF;
        for(int i=0; i<possibleind0.size(); i++){
            ll a = ind0[i];
            ll temp = dist[a];
            ans = min(temp, ans);
        }
        return ans;
    }
}   
컴파일 시 표준 에러 (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... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
