Pagini recente » Cod sursa (job #53624) | Cod sursa (job #1230692) | Cod sursa (job #1557282) | Cod sursa (job #960894) | Cod sursa (job #744870)
Cod sursa(job #744870)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int main(){
ifstream cinr ("dijkstra.in");
ofstream cour ("dijkstra.out");
const int inf = 1 << 30;
int n,m,a,b,it;
cinr >> n;
cinr >> m;
vector< vector<int> > g(n+1);
int d[n+1], c[n+1], p[n+1];
for(int i=1; i<=m; i++){
cinr >> a;
cinr >> b;
cinr >> it;
g[a].push_back(b);
g[a].push_back(it);
}
for(int i=1; i<=n; i++){
d[i]=inf;
p[i]=0;
c[i]=0;
}
d[0]=inf+1;
d[1]=0;
int y,w;
for(int i=1; i<=n+1; i++){
y=0;
for(int j=1; j<=n; j++){
if(d[j]<d[y] && c[j]==0){ y=j; }
}
c[y]=1;
for(int k=0; k<g[y].size(); k+=2){
w=g[y][k];
if(d[w]>d[y]+g[y][k+1]){ d[w]=d[y]+g[y][k+1]; }
}
}
for(int i=2; i<=n; i++){
if(d[i]>=inf){ cour << "0 ";}
else { cour << d[i] << " ";}
}
//cin.ignore(2);
return 0;
}