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;
#define ll long long
#define int long long
#define pii pair<int, int>
void find_resets(int u, vector<bool>& vis, vector<vector<pii>>& adj, vector<int>& resets, vector<signed>& arr){
vis[u] = true;
if(arr[u] == 0){
resets.push_back(u);
}
for(auto e: adj[u]){
if(!vis[e.first]){
find_resets(e.first, vis, adj, resets, arr);
}
}
}
int find_closest(vector<vector<pii>>& adj, vector<int>& resets, int h){
priority_queue<pii> pq;
vector<int> dist(adj.size(), 1e18);
for(auto e: resets){
pq.push({0, e});
dist[e] = 0;
}
while(pq.size()>0){
pq.pop();
auto curid = pq.top().second;
int curdist= pq.top().first;
if(curdist == dist[curid]){
for(auto e: adj[curid]){
int ndist = curdist + e.second;
if(ndist<dist[e.first]){
dist[e.first] = ndist;
pq.push({ndist, e.first});
}
}
}
}
if(dist[h] == 1e18){
return -1;
}
else{
return dist[h];
}
}
double solve(signed N, signed M, signed K, signed H, std::vector<signed> x, std::vector<signed> y, std::vector<signed> c, std::vector<signed> arr) {
vector<vector<pii>> adj(N);
for(int i = 0; i<M; i++){
adj[x[i]].push_back({y[i], c[i]});
adj[y[i]].push_back({x[i], c[i]});
}
vector<int> res(N);
vector<bool> vis(N);
vis[H] = true;
vector<int> resets;
arr[0] = 0;
find_resets(0, vis, adj, resets, arr);
return (double)(find_closest(adj, resets, H));
return -1;
}
# | 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... |