Pagini recente » Cod sursa (job #1492927) | Cod sursa (job #1829259) | Cod sursa (job #1919340) | Cod sursa (job #1621048) | Cod sursa (job #2146374)
#include <iostream>
#include <fstream>
using namespace std;
int const MAXX=100000000;
int a[1005][1005],d[250005],s[250005],n,g;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
void Test(int x)
{
int i,j,minn,y,k;
for(i=1; i<=n; i++) d[i]=MAXX;
d[x]=0;
for(k=1; k<=n; k++)
{
minn=MAXX;
for(i=1; i<=n; i++)
if(!s[i] && d[i]<minn)
{
minn=d[i];
y=i;
}
if(minn==MAXX) break;
s[y]=1;
for(j=1; j<=n; j++)
if(d[y]+a[y][j]<d[j])
{
d[j]=d[y]+a[y][j];
}
}
}
void Read()
{
int i,j;
in>>n>>g;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
a[i][j]=MAXX;
a[i][i]=0;
}
int x,y,c;
while(in>>x>>y>>c)
{
a[x][y]=c;
}
}
void Write()
{
int i;
for( i=2; i<=n; i++)
{
if(d[i]==MAXX)out<<0<<" ";
else out<<d[i]<<" ";
}
}
int main()
{
Read();
Test(1);
Write();
return 0;
}