Pagini recente » Borderou de evaluare (job #1892012) | Borderou de evaluare (job #1729042) | Cod sursa (job #2939642) | Borderou de evaluare (job #244893) | Cod sursa (job #2159210)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int N = 5000;
const int oo = 200000;
int n,m,p,x,y,z,i,j,viz[N],d[N],c[N][N];
int main()
{
f>>n>>p;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
c[i][j]=oo;
while(f>>x>>y>>z)
c[x][y]=min(c[x][y],z);
fill(d,d+n+1,oo);
d[p]=0;
while(1)
{
j=0;
for(i=1; i<=n; i++)
if(!viz[i]&&d[i]<d[j])
j=i;
if(j==0)
break;
viz[j]=1;
for(i=1;i<=n;i++)
d[i]=min(d[i],d[j]+c[j][i]);
}
for(i=1; i<=n; i++)
{
if(d[i]==oo)d[i]=-1;
g<<d[i]<<' ';
}
return 0;
}