Pagini recente » Cod sursa (job #2487163) | Cod sursa (job #2482560) | Cod sursa (job #1412613) | Cod sursa (job #830436) | Cod sursa (job #2366773)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define N 5001
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int oo = (1 << 30);
int a[N][N],n,m,viz[N];
int D[N];
void Citeste()
{
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
int x, y, c;
fin >> x >> y >> c;
a[x][y]=a[y][x]=c;
}
}
void Dijkstra(int x)
{
for(int i = 1; i <= N; i++)
D[i] = oo;
int p,u,i,c[N];
p=u=1;
c[p]=x; D[x]=0;
viz[x]=1;
while(p<=u)
{
x=c[p++];
for(i = 0; i <= n; i++)
if(a[x][i]>0 && D[x] + a[x][i] < D[i])
{
D[i] = D[x] + a[x][i];
if(viz[i]==0)
{
c[++u]=i;
viz[i]=1;
}
}
}
}
void Afiseaza()
{
for(int i = 1; i <= n; i++)
{
if(D[i] != oo)
fout << D[i] << " ";
else
fout << "0 ";
}
}
int main()
{
Citeste();
Dijkstra(1);
Afiseaza();
return 0;
}