Pagini recente » Cod sursa (job #129932) | Cod sursa (job #1752631) | Cod sursa (job #2431731) | Cod sursa (job #2421144) | Cod sursa (job #2558840)
#include <fstream>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,p,i,j,c,a[101][101],nod,F[101],d[101];
#define INFINIT 1000000000
int main()
{
in>>n>>p;
while (in>>i)
{
in>>j>>c;
a[i][j]=c;
}
for (i=1;i<=n;i++)
d[i]=a[p][i];
for (i=0;i<=n;i++)
if (d[i]==0)
d[i]=INFINIT;
F[p]=1;d[p]=0;
for (j=2;j<=n;j++)
{
nod=0;
for (i=1;i<=n;i++)
if (F[i]==0)
if (d[i]<d[nod])
nod=i;
F[nod]=1;
for (i=1;i<=n;i++)
if (F[i]==0)
if (a[nod][i]!=0)
if (d[nod]+a[nod][i]<d[i])
d[i]=d[nod]+a[nod][i];
}
for (i=1;i<=n;i++)
if (d[i]!=INFINIT)
out<<d[i]<<" ";
else
out<<-1<<" ";
in.close();
out.close();
return 0;}
/*
5 4
1 3 1
2 1 2
4 2 1
4 3 8
5 3 5
5 4 2
---
*/