#include using namespace std; struct dete{ int indeks; int trenutak; }; dete resenje[1020]; int n, m, g; int x, y, duzina; int nezadovoljstva[220][2020], graf[220][220], daljine[220][220], putanje[220][220]; int domovi[2020]; vector put; bool potroseni_trenuci[2020]; void flojd_varsal(){ memset(daljine, 1, sizeof(daljine)); for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++) if(graf[i][j]!=0) daljine[i][j]=graf[i][j]; } for(int i=1; i<=n; i++){ daljine[i][i]=0; putanje[i][i]=-1; } for(int k=1; k<=n; k++){ for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ if (daljine[i][j] > daljine[i][k] + daljine[k][j]){ daljine[i][j] = daljine[i][k] + daljine[k][j]; putanje[i][j] = putanje[k][j]; } } } } } bool lambda(dete a, dete b){ return a.trenutak>n>>m>>g; for(int i=1; i<=g; i++) cin>>domovi[i]; for(int i=1; i<=n; i++){ for(int j=1; j<=2000; j++) cin>>nezadovoljstva[i][j]; } memset(putanje, -1, sizeof(daljine)); for(int i=1; i<=m; i++){ cin>>x>>y>>duzina; graf[x][y]=duzina; graf[y][x]=duzina; putanje[x][y]=x; putanje[y][x]=y; } flojd_varsal(); for(int i=1; i<=g; i++){ int grad=domovi[i]; int minimum=nezadovoljstva[grad][1], poz=1; for(int k=1; k<=2000; k++){ if(nezadovoljstva[grad][k]0){ put.push_back(pocetak); pocetak=putanje[1][pocetak]; } reverse(put.begin(), put.end()); cout<