Pagini recente » Cod sursa (job #1203503) | Cod sursa (job #1007483) | Cod sursa (job #1700665) | Cod sursa (job #3295755) | Cod sursa (job #1659481)
#include <iostream>
#include <fstream>
using namespace std;
#define MAX 22000
#define infinit 0x3f3f3f3f
ifstream f("date.in");
ofstream g("date.out");
long n,m,v[MAX][MAX],d[MAX],ant[MAX],sel[MAX];
int i,j,a,b,c,minim,k;
int main(){
f>>n>>m;
for (i=1;i<=n;i++)
for (j=1; j<=n;j++){
if (i==j)
v[i][j]=0;
else
v[i][j]=infinit;}
for (i=1;i<=m;i++){
f>>a>>b>>c;
v[a][b]=c;
v[b][a]=c;}
for (i=1; i<=n; i++){
sel[i]=0;
d[i]=v[1][i];
if (d[i]<infinit)
ant[i]=1;
else
ant[i]=0;}
sel[1]=1;
d[1]=0;
ant[1]=0;
bool ok=true;
while (ok){
minim=infinit;
for(i=1;i<=n;i++)
if(!sel[i] && d[i]<minim){
minim=d[i];
k=i;}
if (minim==infinit)
ok=false;
else{
sel[k]=1;
for(i=1;i<=n;i++)
if (!sel[i] && d[k]+v[k][i]<d[i]){
d[i]=d[k]+v[k][i];
ant[i]=k;}
}
}
for (i=2;i<=n;i++)
if (d[i]==v[1][i])
g<<d[i]<<" ";
else
g<<0<<" ";
g<<endl;
f.close();
g.close();
return 0;
}