Pagini recente » Cod sursa (job #1883797) | Cod sursa (job #1283047) | Cod sursa (job #437041) | Cod sursa (job #441631) | Cod sursa (job #1344678)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int gasit [101],distanta[101],matrice [101][101],vizitat [101],n;
void citire ()
{
int m,x,y,z;
f>>n>>m;
int i;
for (i=1;i<=n;i++)
{
f>>x>>y>>z;
matrice [x][y] = z;
}
}
void afisare ()
{
int i;
for (i=2;i<=n;i++)
g << distanta [i] << " ";
}
void dijkstra ()
{
int i,j,minim,punct;
for (i=2;i<=n;i++)
distanta [i] = matrice [1][i];
distanta [1] = 0;
for (i=2;i<=n;i++)
{
minim = 100001;
for (j=1;j<=n;j++)
if (gasit [j] ==0 && distanta [j] )
if (minim > distanta [j])
{
minim = distanta [j];
punct = j;
}
gasit [punct] = 1;
for (j=2;j<=n;j++)
{
int valoare = matrice [punct][j] + distanta [punct];
if (vizitat [j] == 0)
{
if ((valoare < distanta [j] || distanta [j] == 0) && matrice [punct][j] >0)
distanta [j] = valoare;
}
}
}
}
int main()
{
citire ();
dijkstra ();
afisare ();
return 0;
}