#include using namespace std; typedef int Airport; typedef int Time; Airport read_airport(){ static map airport_codes; static char code[100]; scanf(" %s",code); string scode=code; if (not airport_codes.count(scode)) return airport_codes[scode]=airport_codes.size(); else return airport_codes[scode]; } Time read_time(){ int d,h,m; scanf("%d%*c%d%*c%d",&d,&h,&m); assert(0<=d and d<=365); assert(0<=h and h<=23); assert(0<=m and m<=59); return m+60*(h+24*(d)); } typedef pair pl_t; map> times_at; map> edges; map> redges; vector> flights; int main(){ int n; scanf("%d",&n); for (int i=0; i itinerary(m); set itinerary_s; for (auto &i: itinerary){ scanf("%d",&i); --i; itinerary_s.insert(i); } for (int i=1,j=0; i eta; for (auto it=redges.rbegin(); it!=redges.rend(); it++){ if (it->first.second==destination){ eta[it->first]=it->first.first; } if (eta.count(it->first)){ for (auto j: it->second){ assert(j!=it->first); if (not eta.count(j) or eta[j]>eta[it->first]){ eta[j]=eta[it->first]; } } } } int planned_time=flights[itinerary.back()].second.first; int worst_case=planned_time; for (auto f: itinerary){ int airport=flights[f].first.second; int when=flights[f].first.first; auto ×=times_at[airport]; auto it=upper_bound(times.begin(),times.end(),when); if (it==times.end()){ cout<<"stranded"< situation={*it,airport}; if (not eta.count(situation)){ cout<<"stranded"<