Pagini recente » Cod sursa (job #2793232) | Cod sursa (job #2473749) | Cod sursa (job #594071) | Cod sursa (job #2093676) | Cod sursa (job #1124927)
#include<fstream>
#define inf 999999999;
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int m[101][101],n,M,s,a,b,d,veniri[101],cost[101],viz[101],p,u,c[101],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=1;i<=n;i++)
g<<cost[i]<<" ";
return 0;
}