Pagini recente » Cod sursa (job #711316) | Cod sursa (job #771194) | Cod sursa (job #218827) | Cod sursa (job #1049313) | Cod sursa (job #2973004)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int INF = 1e7;
const int NN = 50001;
struct graf {int dest, cost;};
int n, m;
vector <graf> G[NN];
int dist[NN];
bool spt[NN];
int minDist()
{
int Min = INF, nod_min;
for(int i=1; i<=n; i++)
if(spt[i] == false && dist[i] < Min)
{
Min = dist[i];
nod_min = i;
}
return nod_min;
}
void dijkstra()
{
for(int i=1; i<=n; i++)
dist[i] = INF, spt[i] = false;
dist[1] = 0;
for(int cnt = 0; cnt < n; cnt ++)
{
int u = minDist();
spt[u] = true;
for(int i=0; i<G[u].size(); i++)
{
graf v = G[u][i];
if(dist[u] + v.cost < dist[v.dest] && spt[v.dest] == false)
dist[v.dest] = dist[u] + v.cost;
}
}
//afisare
for(int i=2; i<=n; i++)
fout << dist[i] << " ";
}
int main()
{
fin >> n >> m;
for(int i=1; i<=m; i++)
{
int x, y, c;
fin >> x >> y >> c;
G[x].push_back({y, c});
}
dijkstra();
return 0;
}