이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "factories.h"
#include <stdio.h>
#include <queue>
#include <vector>
#include <algorithm>
#define LL long long
#define pii pair<int,int>
#define pil pair<int,LL>
#define plii pair<LL,pii>
#define ff first
#define ss second
#define INF (LL)9e18
using namespace std;
int n;
LL dist[555555];
vector<pil> edge[555555];
priority_queue<plii,vector<plii>,greater<plii> > pq;
void Init(int N, int A[], int B[], int D[]) {
n=N;
for(int i=1;i<N;i++){
edge[A[i]].push_back({B[i],D[i]});
edge[B[i]].push_back({A[i],D[i]});
}
}
long long Query(int S, int X[], int T, int Y[]) {
for(int i=0;i<n;i++) dist[i]=INF;
for(int i=0;i<T;i++) pq.push({0,{Y[i],i}}),dist[Y[i]]=0;
while(!pq.empty()){
int p=pq.top().ss.ff;
int pd=pq.top().ff;
int pi=pq.top().ss.ss;
pq.pop();
for(int i=0;i<edge[p].size();i++){
if(dist[edge[p][i].ff]>dist[p]+edge[p][i].ss){
dist[edge[p][i].ff]=dist[p]+edge[p][i].ss;
pq.push({dist[edge[p][i].ff],{edge[p][i].ff,pi}});
}
}
}
LL ans=0;
for(int i=0;i<S;i++) ans+=dist[X[i]];
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
factories.cpp: In function 'long long int Query(int, int*, int, int*)':
factories.cpp:40:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<edge[p].size();i++){
~^~~~~~~~~~~~~~~
factories.cpp:36:13: warning: unused variable 'pd' [-Wunused-variable]
int pd=pq.top().ff;
^~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |