Pagini recente » Cod sursa (job #641378) | Cod sursa (job #774253) | Cod sursa (job #2304171) | Cod sursa (job #2875351) | Cod sursa (job #2528303)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n,a,b,c,ma[105][105],v[105],viz[105],nr,minn,rang,m;
int main()
{
fin>>n>>m;
for(;m;m--)
{
fin>>a>>b>>c;
ma[a][b]=c;
if(a==1)
v[b]=c;
}
viz[1]=1;
nr=n-1;
for(int k=1;k<n;k++)
{
minn=2000000;
for(int i=1;i<=n;i++)
{
if(viz[i]==0&&v[i]<minn&&v[i]!=0)
{
minn=v[i];
rang=i;
}
}
viz[rang]=1;
for(int i=1;i<=n;i++)
{
if(ma[rang][i]!=0&&viz[i]==0&&(v[i]>v[rang]+ma[rang][i]||v[i]==0))
v[i]=v[rang]+ma[rang][i];
}
}
for(int i=2;i<=n;i++)
{
if(v[i]==0)
fout<<-1<<" ";
else
fout<<v[i]<<" ";
}
return 0;
}
/*
5 1
1 2 4
1 3 3
2 4 4
2 5 8
3 2 5
4 3 4
5 4 2
5 1 2
*/