Cod sursa(job #2391176)

Utilizator geo_furduifurdui geo geo_furdui Data 28 martie 2019 18:20:51
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
#include<vector>

using namespace std;

int d[100010], n, m;
vector <int> g[100010], cost[100010];

ifstream cin("in.txt");
ofstream cout("out.txt");

void read()
{
	cin >> n >> m;
	int x, y, z;
	for (int i = 1; i <= m; i++)
	{
		cin >> x >> y >> z;
		g[x].push_back(y);
		g[y].push_back(x);
		cost[x].push_back(z);
		cost[y].push_back(z);
	}
}

void ford()
{
	int q[100010];
	int pi = 1, ps = 1;
	q[1] = 1;
	for (int i = 2; i <= n; i++) d[i] = 10001000;
	while (ps <= pi)
	{
		int nod = q[ps];
		for (int i = 0; i < g[nod].size(); i++)
		{
			int fiu = g[nod][i];
			if (d[nod] + cost[nod][i] < d[fiu])
				d[fiu] = d[nod] + cost[nod][i], q[++pi] = fiu;
		}
		++ps;
	}
	for (int i = 2; i <= n; i++) cout << d[i] << " ";
}

int main()
{
	read();
	ford();
	return 0;
}