Pagini recente » Cod sursa (job #2578600) | Cod sursa (job #766276) | Cod sursa (job #1222231) | Cod sursa (job #252017) | Cod sursa (job #2575159)
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n = 9, m;
int G[10001][10001];
int dis[100], viz[100];
int IMAX = 9999999999;
int dismin() {
int min=IMAX, mink;
for (int i = 1; i <= n; i++) {
if (!viz[i] && dis[i] <= min) {
min = dis[i];
mink = i;
}
}
return mink;
}
void dijkstra(int src) {
for (int i = 1; i <= n; i++)
dis[i] = IMAX;
dis[src] = 0;
for (int i = 1; i <= n; i++) {
int next = dismin();
viz[next] = 1;
for (int j = 1; j <= n; j++) {
if (!viz[j] && G[next][j] && dis[next] != IMAX && dis[j] > dis[next] + G[next][j])
dis[j] = dis[next] + G[next][j];
}
}
}
int main() {
fin >> n;
fin >> m;
int x, y, z;
for (int i = 1; i <= m; i++) {
fin >> x >> y >> z;
G[x][y] = z;
G[y][x] = z;
}
dijkstra(1);
for (int i = 2; i <= n; i++)
fout << dis[i] << " ";
}