Pagini recente » Cod sursa (job #2091532) | Cod sursa (job #1393457) | Cod sursa (job #3276758) | Cod sursa (job #1795469) | Cod sursa (job #2090588)
#include <bits/stdc++.h>
#define x first
#define y second
#define pp pair< int, int >
using namespace std;
const int mxn = 50 * 1000 + 10;
int n, m;
int d[ mxn ];
vector< pp > v[ mxn ];
priority_queue< pp, vector< pp >, greater< pp > > q;
void dijkstra(){
for(int i = 2; i <= n; i++)
d[ i ] = INT_MAX;
q.push(make_pair(0, 1));
while(!q.empty()){
int nod = q.top().y;
int c = q.top().x;
q.pop();
if(c > d[ nod ])
continue;
for(auto it: v[ nod ]){
if(d[ it.x ] > c + it.y){
d[ it.x ] = c + it.y;
q.push(make_pair(d[ it.x ], it.x));
}
}
}
}
int main()
{
ios_base::sync_with_stdio( false );
cin.tie( 0 );
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
cin>> n >> m;
for(int i = 0, xx, yy, zz; i < m; i++){
cin>> xx >> yy >> zz;
v[ xx ].push_back(make_pair(yy, zz));
}
dijkstra();
for(int i = 2; i <= n; i++)
if(d[ i ] == INT_MAX)
cout<< 0 << ' ';
else
cout<< d[ i ] << ' ';
return 0;
}