Pagini recente » Cod sursa (job #1836817) | Cod sursa (job #1427254) | Cod sursa (job #527330) | Cod sursa (job #329861) | Cod sursa (job #2336016)
#include<fstream>
#define pinf 1000000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int i,j,n,m,a,b,c[1500][1500],d[1500],t[1500],viz[1500];
void dijkstra(int start)
{
int i,j,mini,nod;
for(i=1;i<=n;i++)
{
d[i]=c[start][i];
if(d[i]<pinf && i!=start)
t[i]=start;
else
t[i]=0;
}
viz[start]=1;
mini=pinf;
for(i=1;i<=n;i++)
{
if(d[i]<mini && viz[i]==0)
{
mini=d[i];
nod=i;
}
}
while(mini!=pinf)
{
viz[nod]=1;
for(j=1;j<=n;j++)
{
if(d[nod]+c[nod][j]<d[j])
{
d[j]=d[nod]+c[nod][j];
t[j]=nod;
}
}
mini=pinf;
for(i=1;i<=n;i++)
{
if(d[i]<mini && viz[i]==0)
{
mini=d[i];
nod=i;
}
}
}
for(i=1;i<=n;i++)
{
if(i!=start)
fout<<d[i]<<' ';
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
c[i][j]=pinf;
else
c[i][j]=0;
for(i=1;i<=m;i++)
{
fin>>a>>b;
fin>>c[a][b];
}
dijkstra(1);
fin.close();
fout.close();
return 0;
}