Pagini recente » Cod sursa (job #2043225) | Cod sursa (job #1175182) | Cod sursa (job #1435381) | Cod sursa (job #2422453) | Cod sursa (job #1435449)
#include <fstream>
#include <vector>
#include <queue>
#define pb push_back
#define mp make_pair
using namespace std;
const int MAXN=50002;
const int INF=250002;
typedef pair <int, int> muchie;
typedef vector <muchie> graf;typedef priority_queue<int,vector <pair<int,int> > > coada;
int n,m,D[MAXN];
graf G[MAXN];
coada C;
void dijkstra();
int main () {
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
fin >> n >> m;
for (int i = 0 ; i < m ; ++i) {
int x, y, c;
fin >> x >> y >> c;
G[x].pb(mp(c, y));
}
dijkstra();
for (int i = 2 ; i <= n ; ++i) {
if (D[i] == INF)
fout << "0 ";
else
fout << D[i] <<' ';
}
return 0;
}
void dijkstra(){
//memset(D,INF,sizeof(D));
for (int i = 1 ; i <= n ; ++i)
D[i] = INF;
D[1] = 0;
C.push(mp(0, 1));
while (!C.empty()) {
muchie E = C.top();
C.pop();
int nod = E.second;
for (graf :: iterator it = G[nod].begin() ; it != G[nod].end() ; ++it) {
if (D[nod] + it -> first < D[it -> second]) {
D[it -> second] = D[nod] + it -> first;
C.push(mp(D[it -> second], it -> second));
}
}
}
}