#include #include #include using namespace std; struct node{ int distance; int cena; int index; node(){ } node(int _index, int _distance, int _cena){ index=_index; distance=_distance; cena=_cena; } bool operator <(const node&tmp)const{ return distance > tmp.distance; } }; int main() { int n; int m; int S; int S1=200000000; cin>>S; cin>>n>>m; int matrica[n+1][S + 1]; vectorv[n+1]; for(int x1=0; x1>indexa>>indexb>>distance>>cost; v[indexa].push_back(node(indexb, distance, cost)); v[indexb].push_back(node(indexa, distance, cost)); } priority_queuepq; pq.push(node(1, 0, 0)); matrica[1][0]=0; while(!pq.empty()){ node cnode=pq.top(); pq.pop(); for(int h=0; hdistance+cnode.distance)){ matrica[sosed][cena+cnode.cena]=distance+cnode.distance; pq.push(node(sosed, distance+cnode.distance, cena+cnode.cena)); } } } for(int y=0; y<=S; y++){ if(matrica[n][y]