Pagini recente » Cod sursa (job #611119) | Cod sursa (job #994290) | Cod sursa (job #3259929) | Cod sursa (job #1911159) | Cod sursa (job #1048197)
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream fin("dijkstra.in");
std::ofstream fout("dijkstra.out");
int n, m;
struct vertex
{
int cost, legatura;
};
std::vector<vertex> muchie[50005];
long long visited[50005];
void dfs(int &nod, long long &valoare)
{
for(int i = 0; i < muchie[nod].size(); i++)
{
if(visited[muchie[nod][i].legatura] > valoare + muchie[nod][i].cost || visited[muchie[nod][i].legatura] == -1)
{
visited[muchie[nod][i].legatura] = valoare + muchie[nod][i].cost;
dfs(muchie[nod][i].legatura, visited[muchie[nod][i].legatura]);
}
}
}
void ciorba()
{
for(int i = 2; i <= n; i++)
{
visited[i] = -1;
}
int vacute_mov = 1;
long long valoare = 0;///fara numar
dfs(vacute_mov, valoare);
for(int i = 2; i <= n; i++)
{
if(visited[i] == -1)
{
fout<<"0 ";
continue;
}
fout<<visited[i]<<' ';
}
}
void citire()
{
fin>>n>>m;
int x, y, z;
for(int i = 0; i < m; i++)
{
fin>>x>>y>>z;
vertex nod1;
nod1.cost = z;
nod1.legatura = y;
muchie[x].push_back(nod1);
}
ciorba();
}
int main()
{
citire();
return 0;
}