Pagini recente » Cod sursa (job #2255460) | Cod sursa (job #1721136) | Cod sursa (job #1910536) | Cod sursa (job #858118) | Cod sursa (job #1112889)
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int A[30000][30000],a,max1,b,c,inainte[30000],s,i,N,viz[30000],j,v;
long long M,C[30000];
int main()
{f>>N>>M;
for(i=1;i<=M;i++) {f>>a>>b>>c;
A[a][b]=c;
}
s=1;
viz[s]=1;max1=0;
for(i=1;i<=N;i++) {C[i]=A[s][i];if(C[i]>max1) max1=C[i];
inainte[i]=s;}
C[0]=max1+1;
//g<<C[0]<<'\n';
//for(i=1;i<=N;i++) g<<C[i]<<' ';
inainte[s]=0;
for(i=1;i<=N-2;i++)
{ v=0;
for(j=1;j<=N;j++)
if(viz[j]==0&&C[j]!=0&&C[j]<C[v]) v=j;
if(v!=0)
{ viz[v]=1;
for(j=1;j<=N;j++)
if(A[v][j]!=0&&viz[j]==0&&(C[j]==0||C[v]+A[v][j]<C[j]))
{C[j]=C[v]+A[v][j];
inainte[j]=v;
}
}
}
for(i=2;i<=N;i++) g<<C[i]<<' ';
g<<'\n';
f.close();
g.close();
return 0;
}