Pagini recente » Cod sursa (job #1424459) | Cod sursa (job #2708566) | Cod sursa (job #231009) | testfminostres | Cod sursa (job #2133246)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 100001
#define inf 1000001
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int a[1001][1001],d[1001],vis[1001];
int n,m;
void citire() {
f>>n>>m;
int x,y,c1;
for (int i=1;i<=m;i++) {
f>>x>>y>>c1;
a[x][y]=c1;
a[y][x]=c1;
}
}
void rez() {
for (int i=1;i<=n;i++) {
if (a[1][i]==0 && i!=1) {
d[i]=inf;
}
else {
d[i]=a[1][i];
}
}
/*
for (int i=1;i<=n;i++) {
cout<<d[i]<<" ";
}
*/
int minim=0;
int pos=0;
vis[1]=1;
for (int i=2;i<=n;i++) {
minim=inf;
for (int j=1;j<=n;j++) {
if (d[j]<minim && vis[j]==0) {
minim=d[j];
pos=j;
}
}
vis[pos]=1;
for (int j=1;j<=n;j++) {
if ( d[j]>d[pos]+a[pos][j] && a[pos][j]!=0) {
d[j]=d[pos]+a[pos][j];
}
}
}
for (int i=2;i<=n;i++) {
if (d[i]==inf) {
g<<"0 ";
}
else {
g<<d[i]<<" ";
}
}
}
int main() {
citire();
rez();
return 0;
}