Pagini recente » Evacuare | Cod sursa (job #2436846) | Pictura | Cod sursa (job #17249) | Cod sursa (job #2488840)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout("dijkstra.out");
int p, u, i, a, b, c[100001], ct[501][501], n, m, viz[50001], cost[50001];
vector <int> v[50001];
int main()
{
fin>>n>>m;
for(i = 1; i <= m; i++){
fin>>a>>b>>ct[a][b];
ct[b][a] = ct[a][b];
v[a].push_back(b);
v[b].push_back(a);
}
p = 1;
u = 1;
c[u] = 1;
viz[1] = 1;
while(p <= u){
for(i = 0; i < v[p].size(); i++){
if(viz[v[c[p]][i]] == 0){
u ++;
c[u] = v[c[p]][i];
viz[v[c[p]][i]] = 1;
cost[v[c[p]][i]] = cost[c[p]] + ct[c[p]][v[c[p]][i]];
}
else
if(cost[v[c[p]][i]] > cost[c[p]] + ct[c[p]][v[c[p]][i]])
cost[v[c[p]][i]] = cost[c[p]] + ct[c[p]][v[c[p]][i]];
}
p ++;
}
for(i = 2; i <= n; i ++)
fout<<cost[i]<<" ";
return 0;
}