| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1307917 | StefanSebez | Toll (BOI17_toll) | C++20 | 669 ms | 110704 KiB |
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ll long long
#define ld long double
#define mp make_pair
const int N=5e4+50,S=500,inf=1e9;
void chmn(int &x,int y){x=min(x,y);}
vector<pair<int,int>>E[N],E1[N];
int K,n,m,q;
int dist[N];
int dist1[N][N/S+5][5];
int main(){
scanf("%i%i%i%i",&K,&n,&m,&q);
for(int i=1;i<=m;i++){
int u,v,w;scanf("%i%i%i",&u,&v,&w);
E[u].pb({v,w});
E1[v].pb({u,w});
}
for(int B=0;B*S<=n/K;B++){
for(int j=0;j<K;j++){
int U=B*S+j;
for(int i=0;i<=n;i++)dist1[i][B][j]=inf;
queue<int>kju;kju.push(U);
dist1[U][B][j]=0;
while(!kju.empty()){
int u=kju.front();kju.pop();
for(auto [v,w]:E[u]){
if(dist1[v][B][j]>=inf)kju.push(v);
chmn(dist1[v][B][j],dist1[u][B][j]+w);
}
}
kju.push(U);
while(!kju.empty()){
int u=kju.front();kju.pop();
for(auto [v,w]:E1[u]){
if(dist1[v][B][j]>=inf)kju.push(v);
chmn(dist1[v][B][j],dist1[u][B][j]+w);
}
}
}
}
for(int i=0;i<=n;i++)dist[i]=inf;
while(q--){
int U,V;scanf("%i%i",&U,&V);
if(V/K-U/K<=S+5){
queue<int>kju;kju.push(U);
dist[U]=0;
while(!kju.empty()){
int u=kju.front();kju.pop();
for(auto [v,w]:E[u])if(v<=V){
if(dist[v]>=inf)kju.push(v);
chmn(dist[v],dist[u]+w);
}
}
int res=dist[V];if(res>=inf)res=-1;
printf("%i\n",res);
for(int B=U/K;B<=V/K;B++)for(int i=B*K;i<B*K+K;i++)dist[i]=inf;
}
else{
int res=inf;
bool bul=false;
for(int B=0;B*S<=n/K;B++){
for(int j=0;j<K;j++){
int X=B*S+j;
if(U<=X&&X<=V)chmn(res,dist1[U][B][j]+dist1[V][B][j]),bul=true;
}
}
assert(bul==true);
if(res>=inf)res=-1;
printf("%i\n",res);
}
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 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... | ||||
