Pagini recente » Cod sursa (job #2399830) | Cod sursa (job #1825837) | Cod sursa (job #1584203) | Cod sursa (job #1142429) | Cod sursa (job #871900)
Cod sursa(job #871900)
#include <fstream>
#define INF 9999999
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,x,y,c,d[50001],G[5000][5000],t[50001],i,j;
bool sel[50001];
void dijkstra ()
{
int i,j,mi,nod;
bool ok=true;
for (i=1;i<=n;i++) d[i]=INF,sel[i]=false,t[i]=0;
d[1]=0;
nod=0;
for (i=1; i<=n && ok; i++)
{
mi=INF;
for (j=1;j<=n;j++)
if (d[j]<mi && !sel[j])
{
nod=j;
mi=d[j];
}
if (mi==INF) ok=false;
else
{
sel[nod]=true;
for (j=1;j<=n;j++)
if (d[j]>d[nod]+G[nod][j] && !sel[j])
{
d[j]=d[nod]+G[nod][j];
t[j]=nod;
}
}
}
}
int main ()
{
f>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) G[i][j]=INF;
for (i=1;i<=m;i++)
{
f>>x>>y>>c;
G[x][y]=c;
}
dijkstra();
for (i=2;i<=n;i++) if (d[i]!=INF) g<<d[i]<<' '; else g<<"0\n";
return 0;
}