답안 #865252

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
865252 2023-10-24T06:51:08 Z jk410 사이버랜드 (APIO23_cyberland) C++17
0 / 100
234 ms 10588 KB
#include "cyberland.h"
#include <vector>
#include <queue>
#include <functional>
using namespace std;
struct edge{
    int v;
    double cost;
    bool operator<(const edge &tmp)const{
        return cost>tmp.cost;
    }
};
const int MAXK=100;
const double INF=1e15;
vector<edge> Adj[100000];
bool Ikeru[100000];
double Dist[100000];
priority_queue<edge> PQ;
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<M; i++){
        Adj[x[i]].push_back({y[i],(double)c[i]});
        Adj[y[i]].push_back({x[i],(double)c[i]});
    }
    function<void(int)> dfs=[&](int v){
        Ikeru[v]=true;
        if (v==H)
            return;
        for (edge i:Adj[v]){
            if (!Ikeru[i.v])
                dfs(i.v);
        }
    };
    dfs(0);
    if (!Ikeru[H])
        return -1;
    K=min(K,MAXK);
    fill(Dist,Dist+N,INF);
    for (int i=0; i<N; i++){
        if (Ikeru[i]&&!arr[i]){
            Dist[i]=0;
            PQ.push({i,0});
        }
    }
    Dist[0]=0;
    PQ.push({0,0});
    while (K--){
        while (!PQ.empty()){
            edge cur=PQ.top();
            PQ.pop();
            if (Dist[cur.v]<cur.cost||cur.v==H)
                continue;
            for (edge i:Adj[cur.v]){
                if (Dist[i.v]>cur.cost+i.cost){
                    Dist[i.v]=cur.cost+i.cost;
                    PQ.push({i.v,Dist[i.v]});
                }
            }
        }
        for (int i=0; i<N; i++){
            if (Ikeru[i]&&arr[i]==2){
                Dist[i]/=2;
                PQ.push({i,Dist[i]});
            }
        }
    }
    return Dist[H];
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 185 ms 4508 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 34 ms 6492 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 32 ms 6884 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 44 ms 10588 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 33 ms 6740 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 32 ms 6992 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 100 ms 6992 KB Wrong Answer.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 234 ms 7012 KB Wrong Answer.
2 Halted 0 ms 0 KB -