Pagini recente » Cod sursa (job #2470686) | Istoria paginii utilizator/dianalucia | Cod sursa (job #827428) | Cod sursa (job #1725328) | Cod sursa (job #1870054)
#include<fstream>
#include<vector>
#include<queue>
#define DIM 50005
#define str pair< int, int >
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int a, b, c, d[DIM], n, m, G;
vector< str > v[DIM];
priority_queue< str, vector<str>, greater<str> > q;
int main(){
fin >> n >> m;
for( int i = 1; i <= m; i++ ){
fin >> a >> b >> c;
v[a].push_back( make_pair( b, c ) );
}
for( int i = 1; i <= n; i++ ){
d[i] = 2000000000;
}
d[1] = 0;
q.push( make_pair( 0, 1 ) );
while( !q.empty() ){
int nod = q.top().second;
for( int i = 0; i < v[nod].size(); i++ ){
int vecin = v[nod][i].first;
int cost = v[nod][i].second;
if( d[vecin] > q.top().first + cost ){
d[vecin] = q.top().first + cost;
q.push( make_pair( d[vecin], vecin ) );
}
}
q.pop();
}
for( int i = 2; i <= n; i++ ){
fout << ( (d[i] == 2000000000) ? 0 : d[i] ) << " ";
}
return 0;
}