#include #include #include #include #include using namespace std; #define ll long long #define pb push_back #define pf push_front #define db double #define ff first #define ss second class Policajac { public: ll curCity=0; ll timeWhenCome=0; ll spreman=0; bool bio=false; vector cities; vector times; }; vector> v[1100]; pair> put[1100][1100]; vector>> crimes; ll brp[1100]; ll n,e,p,c,tmax=0; vector policajci; int bio[1100]; void racunajputeve() { for(int i=0;i>> pq; for(auto j:v[i]){ pq.push({-j.ss, {j.ff, i}}); } while(pq.empty()==0){ pair> top = pq.top(); top.ff=-top.ff; pq.pop(); if(bio[top.ss.ff]) continue; bio[top.ss.ff]=1; put[i][top.ss.ff].ff= top.ff; put[i][top.ss.ff].ss = put[i][top.ss.ss].ss; put[i][top.ss.ff].ss.pb(top.ss.ff); for(auto j:v[top.ss.ff]){ if(bio[j.ff])continue; pq.push({-(top.ff+j.ss), {j.ff, top.ss.ff}}); } } } } void ispisi() { for(Policajac* ii: policajci){ Policajac i = *ii; printf("%d\n",i.cities.size()); if(i.bio==false){ printf("1\n0"); } else{ for(auto j:i.cities) printf("%lld ",j); } printf("\n"); for(auto j:i.times){ printf("%lld ",j); } if(i.times.size())printf("\n"); } } bool cmp(pair> x,pair> y) { if(x.ss.ff==y.ss.ff) return x.ss.ss > y.ss.ss; return x.ss.ff> mozepol; for(int j=0;jbio==false){ mozepol.pb({INT_MAX, j}); } else if(i.ss.ff-((*policajci[j]).spreman)>=put[(*policajci[j]).curCity][i.ff].ff){ mozepol.pb({put[(*policajci[j]).curCity][i.ff].ff,j}); } } sort(mozepol.begin(),mozepol.end()); if(mozepol.size()>=i.ss.ss){ for(int jj=0;jjbio==false){ policajci[j]->bio=true; policajci[j]->curCity=i.ff; policajci[j]->spreman=i.ss.ff+1; policajci[j]->timeWhenCome=0; policajci[j]->cities.pb(i.ff); continue; } else if((*policajci[j]).curCity==i.ff){ policajci[j]->spreman=i.ss.ff+1; continue; } vector temp1 = put[(*policajci[j]).curCity][i.ff].ss; (*policajci[j]).cities.insert(policajci[j]->cities.end(), temp1.begin(), temp1.end()); (*policajci[j]).times.pb(policajci[j]->spreman-(*policajci[j]).timeWhenCome); int temp = put[(*policajci[j]).curCity][i.ff].ss.size()-1; for(int k=0;kcurCity=i.ff; } } } ispisi(); return 0; }