Pagini recente » Cod sursa (job #499614) | Cod sursa (job #577313) | Cod sursa (job #115184) | Cod sursa (job #76031) | Cod sursa (job #2375197)
#include "pch.h"
#include <iostream>
#include <fstream>
#define Nmax 50
#define Inf 100000
using namespace std;
int C[Nmax][Nmax];
int dist[Nmax], pr[Nmax] , M[Nmax];
int n, m;
const int x0 = 1;
void afisare()
{
ofstream out("dijkstra.out");
for (int i = 2; i <= n; i++)
out << dist[i] << " ";
out.close();
}
void citire()
{
ifstream in("dijkstra.in");
int x, y,c;
in >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
C[i][j] = C[j][i] = Inf;
for (int i = 1; i <= m; i++)
{
in >> x >> y>>c;
C[x][y] = c;
}
for (int i = 1; i <= n; i++)
{
dist[i] = C[x0][i];
pr[i] =x0;
}
pr[x0] = 0;
dist[x0] = 0;
M[x0] = 1;
in.close();
}
int main()
{
citire();
int dmin, Vfmin;
for (int j = 1; j < n; j++)
{
dmin = Inf;
for(int i = 1 ;i<= n ;i++)
if (!M[i] && dmin > dist[i])
{
dmin = dist[i];
Vfmin = i;
}
M[Vfmin] = 1;
for(int i = 1 ;i<= n ;i++)
if (!M[i] && dist[i] > dmin + C[Vfmin][i])
{
pr[i] = Vfmin;
dist[i] = dmin + C[Vfmin][i];
}
}
afisare();
return 0;
}