Pagini recente » Cod sursa (job #194133) | Cod sursa (job #2329806) | Cod sursa (job #2399674) | Cod sursa (job #2587713) | Cod sursa (job #3184392)
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#define infinit 100000000;
int n,p,x,y,c,v[101],d[101],a[101][101],poz,mini;
int main()
{ fin>>n>>p;
while(fin>>x>>y>>c)
a[x][y]=c;
for(int i=1;i<=n;i++)
{ if(a[p][i])
d[i]=a[p][i];
else d[i]=infinit;
}
d[p]=0;
v[p]=1;
for(int i=1;i<n;i++)
{ mini=infinit;
for(int k=1;k<=n;k++)
if(v[k]==0 && d[k]<mini)
{mini=d[k];
poz=k;
}
if(mini==100000000)
break;
else{
v[poz]=1;
for(int j=1;j<=n;j++)
if(v[j]==0 && d[j]>a[poz][j]+d[poz] && a[poz][j])
d[j]=a[poz][j]+d[poz];
}
}
for(int i=1;i<=n;i++)
if(d[i]!=100000000)
fout<<d[i]<<' ';
else fout<<-1<<' ';
return 0;
}