This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "cyberland.h"
#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int>>ad[100005];
vector<int>rs,ar,vs(100005);
int h;
void dfs(int u){
if(u==h)return;
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) {
h=H;
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 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... |