Pagini recente » Cod sursa (job #550708) | Cod sursa (job #1813422) | Rating Samuilescu Raluca (Samuilescu_Raluca_Gabriela_323CA) | Cod sursa (job #900099) | Cod sursa (job #1127559)
#include<fstream>
#define N 3000
#define inf 999999999;
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int m[N][N],n,M,s,a,b,d,veniri[N],cost[N],viz[N],p,u,c[N],i;
int main ()
{
f>>n>>M;
s=1;
for(i=1;i<=M;i++)
{
f>>a>>b>>d;
m[a][b]=d;
veniri[b]=1;
}
for(i=1;i<=n;i++)
if(veniri[i]==0&&i!=s)
{
viz[i]=1;
cost[i]=-1;
}
p=u=1;
c[u]=s;
viz[s]=1;
while(p<=u)
{
for(i=1;i<=n;i++)
{
if(viz[i]==0&&m[c[p]][i]>0)
{
c[++u]=i;
viz[i]=1;
cost[i]=cost[c[p]]+m[c[p]][i];
}
if(cost[i]>cost[c[p]]+m[c[p]][i]&&m[c[p]][i]!=0)
cost[i]=cost[c[p]]+m[c[p]][i];
}
p++;
}
for(i=1;i<=n;i++)
if(i!=s&&cost[i]!=-1&&cost[i]==0)
cost[i]=-1;
for(i=2;i<=n;i++)
if(cost[i]!=-1)
g<<cost[i]<<" ";
else
g<<"0 ";
return 0;
}