Pagini recente » Cod sursa (job #1309882) | Cod sursa (job #1987998) | Cod sursa (job #480240) | Cod sursa (job #1131361) | Cod sursa (job #681573)
Cod sursa(job #681573)
#include<fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int m,n,i,a,b,cost[50005],viz[50005],x,c,A[50005][50005];
int chestie( int p )
{
int minim,i;
minim=0;
p=0;
for(i=2;i<=n;i++)
{
if(viz[i]==0 && cost[i]&&(minim>=cost[i]||minim==0)) minim=cost[i],p=i;
}
return p;
}
void prel(int y)
{
viz[y]=1;
for(int i=1;i<=n;i++)
{
if(viz[i]==0&&A[y][i]!=0)
if(cost[y]+A[y][i]<cost[i]||cost[i]==0) cost[i]=cost[y]+A[y][i];
}
}
int main()
{
f>>n>>m;
viz[1]=1;
for(i=1;i<=m;i++)
{
f>>a>>b>>c;
if(a==1) cost[b]=c;
else if(b==1) cost[a]=c;
A[a][b]=A[b][a]=c;
}
x=chestie(1);
while(x!=0)
{
prel(x);
x=chestie(1);
}
for(i=2;i<=n;i++) g<<cost[i]<<' ';
f.close();
g.close();
return 0;
}