제출 #526691

#제출 시각아이디문제언어결과실행 시간메모리
526691Hydroxic_AcidAutobus (COCI22_autobus)C++14
15 / 70
1087 ms3992 KiB
#include <iostream> #include <cstring> #include <vector> #include <queue> using namespace std; #define ll long long int n, m, k, q; vector<pair<int, int> > adjl[75]; bool check(ll time, int c, int d){ queue<pair<int, pair<int, ll> > > q; q.push(make_pair(c, make_pair(0, 0))); while(!q.empty()){ pair<int, pair<int, int> > iii = q.front(); q.pop(); if(iii.second.first > k) continue; if(iii.second.second > time) continue; if(iii.first == d) return true; for(int i = 0; i < (int)adjl[iii.first].size(); i++){ q.push(make_pair(adjl[iii.first][i].first, make_pair(iii.second.first + 1, iii.second.second + adjl[iii.first][i].second))); } } return false; } int main(){ cin >> n >> m; for(int i = 0; i < m; i++){ int a, b, t; cin >> a >> b >> t; adjl[a].push_back(make_pair(b, t)); } cin >> k >> q; for(int i = 0; i < q; i++){ int c, d; cin >> c >> d; ll lower = 0; ll upper = 1000000000000; while(lower < upper){ ll mid = (ll)(lower + upper) / 2; if(check(mid, c, d))upper = mid; else lower = mid + 1; } if(upper == 1000000000000 && !check(upper, c, d)) cout << -1; else cout << lower; cout << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...