Pagini recente » Cod sursa (job #1076431) | Cod sursa (job #251156) | Cod sursa (job #260138) | Cod sursa (job #1338165) | Cod sursa (job #2127109)
#include <iostream>
#include <fstream>
#define oo 2000000000
#include <vector>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int viz[50005], n, m, st, min1, im;
struct coord
{
int n;
int d;
};
coord aux;
vector <coord> a[50005];
int dist[50005];
int main()
{
int i, j, x, y, c, k;
f>>n;
f>>m;
for (i=1; i<=m; i++)
{
f>>x>>y>>aux.d;
aux.n=y;
a[x].push_back(aux);
aux.n=x;
a[y].push_back(aux);
}
for (i=2; i<=n; i++) dist[i]=oo;
for (i=0; i<a[1].size(); i++)
dist[a[1][i].n]=a[1][i].d;
st=1;
viz[st]=1;
for (i=2; i<=n; i++)
{
min1=oo;
for (j=1; j<=n; j++)
if (dist[j]<min1 && viz[j]==0)
{
min1=dist[j];
im=j;
}
viz[im]=1;
for (k=0; k<a[im].size(); k++)
{
j=a[im][k].n;
if (viz[j]==0 && dist[im]+a[im][k].d<dist[j])
dist[j]=dist[im]+a[im][k].d;
}
}
for (i=2; i<=n; i++) g<<dist[i]<<" ";
return 0;
}