Pagini recente » Cod sursa (job #667760) | Cod sursa (job #898027) | Cod sursa (job #2669681) | Cod sursa (job #1451595) | Cod sursa (job #277340)
Cod sursa(job #277340)
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
typedef struct{
int to, cost;
} nod;
#define nMax 50001
vector<nod> G[nMax];
int d[nMax];
int n,m;
nod new_nod(int x, int y){
nod rez;
rez.to = x, rez.cost = y;
return rez;
}
void citire(char file[]){
ifstream fin(file);
fin >> n >> m;
for (int i=0;i<m;i++){
int a, b, c;
fin >> a >> b >> c;
G[a-1].push_back(new_nod(b-1,c));
}
}
void solve(int root, int d[]){
int v[nMax];
for (int i=0;i<n;i++)
v[i] = 0, d[i] = int(2e9);
d[root] = 0;
queue<int> q;
q.push(root);
while (!q.empty()){
int a = q.front();
q.pop();
v[a] = 0;
for (vector<nod>::iterator it = G[a].begin(); it!=G[a].end(); it++){
int b = (*it).to, c = (*it).cost;
if (d[a] + c < d[b]){
d[b] = d[a] + c;
if (!v[b])
q.push(b), v[b] = 1;
}
}
}
}
void scriere(char file[]){
ofstream fout(file);
for (int i=1;i<n;i++)
fout << (d[i] < int(2e9)?d[i]:0) << " ";
fout.close();
}
int main(){
citire("dijkstra.in");
solve(0, d);
scriere("dijkstra.out");
return 0;
}