제출 #1305385

#제출 시각아이디문제언어결과실행 시간메모리
1305385vehamValley (BOI19_valley)C++20
0 / 100
139 ms7968 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vi; typedef vector<ll> vl; typedef vector<vi> vvi; typedef vector<vl> vvl; struct edge{ ll v; ll w; }; bool operator<(edge a, edge b){return a.w > b.w;} bool operator==(edge a, edge b){return make_pair(a.v,a.w) == make_pair(b.v,b.w);}; typedef vector<edge> ve; typedef vector<ve> vve; #define MAX 1e17 int main(){ ll N,S,Q,E; cin >> N >> S >> Q >> E; E--; vi A(N-1),B=A,Sh(S),IS(N,0),I(Q),R(Q); vl W(N-1); vl W2(N-1); for(ll i = 0;i < N-1;i++){ cin >> A[i] >> B[i] >> W[i]; A[i]--,B[i]--; W2[min(A[i],B[i])] = W[i]; } for(ll i = 0;i < S;i++){ cin >> Sh[i]; IS[--Sh[i]] = 1; } for(ll i = 0;i < Q;i++){ cin >> I[i] >> R[i]; I[i]--,R[i]--; } vl D(N,MAX); for(int i = 0;i < N;i++){ if(IS[i]) D[i] = 0; else if(i != 0) D[i] = min(D[i],D[i-1]+W[i-1]); } for(int i = N-1;i >= 0;i--){ if(IS[i]) D[i] = 0; else if(i != N-1) D[i] = min(D[i],D[i+1]+W[i]); } for(int q = 0;q < Q;q++){ int sep = min(A[I[q]],B[I[q]]); if(R[q] <= sep == E <= sep){ cout << "escaped\n"; continue; } if(D[R[q]] == MAX){ cout << "oo\n"; continue; } cout << D[R[q]] << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...