| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1326586 | eri16 | Cyberland (APIO23_cyberland) | C++20 | 20 ms | 9396 KiB |
#include <bits/stdc++.h>
#include "cyberland.h"
using namespace std;
vector <int> reachable(100005,0);
vector<pair<int,double>> adj[100005];
void dfs(int node, int parent){
if (reachable[node]==1){return;}
reachable[node]=1;
for (auto [child,t] : adj[node]){
if (child!=parent){
dfs(child,node);
}
}
}
double solve(int N, int M, int K, int H, vector<int> x, vector<int> y, vector<int> c, vector<int> arr){
priority_queue<
pair<double,int>,
vector<pair<double,int>>,
greater<pair<double,int>>
> pq;
pq.push({0,H});
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]});
}
dfs(0,-1);
vector<bool> vis(N, false);
double mn=1e18;;
while(!pq.empty()){
auto [d,u]=pq.top();
pq.pop();
vis[u]=true;
if(u==0 || (arr[u]==0 && reachable[u]==1)){mn=min(mn,d);}
for(auto [v,t] : adj[u]){
if(!vis[v]){
pq.push({d+t,v});
}
}
}
fill(reachable.begin(), reachable.begin()+N, 0);
for(int i=0; i<N; i++){
adj[i].clear();
}
if (mn==1e18){return -1;}
return mn;
}
| # | 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... | ||||
