Submission #981891

#TimeUsernameProblemLanguageResultExecution timeMemory
981891vjudge1사이버랜드 (APIO23_cyberland)C++17
15 / 100
43 ms10840 KiB
#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;

vector<pair<int,int>>ad[100005];
vector<int>rs,ar,vs(100005);

void dfs(int u){
    if(ar[u]==0)rs.push_back(u);
    vs[u]=1;
    for(auto v:ad[u])
        if(!vs[v.first])
            dfs(v.first);
}

double solve(int N,int M,int K,int H,vector<int>x,vector<int>y,vector<int>c,vector<int>arr) {
    for(int i=0;i<N;i++)ad[i].clear(),vs[i]=0;
    for(int i=0;i<M;i++)
        ad[x[i]].push_back({y[i],c[i]}),
        ad[y[i]].push_back({x[i],c[i]});
    rs.clear();
    ar.clear();
    rs.push_back(0);
    for(auto i:arr)ar.push_back(i);
    dfs(0);
    priority_queue<pair<double,int>>dj;
    for(auto i:rs)dj.push({0,i});
    double R[N];
    for(int i=0;i<N;i++)R[i]=1;
    while(!dj.empty()){
        auto t=dj.top();
        dj.pop();
        if(R[t.second]!=1)continue;
        R[t.second]=t.first;
        for(auto j:ad[t.second])dj.push({t.first-j.second,j.first});
    }
    return -R[H];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...