Cod sursa(job #1896241)

Utilizator ButmalaiDanButmalai Dan ButmalaiDan Data 28 februarie 2017 16:08:56
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, m, x, y, c;
vector<ll> a[250100];
map<pair<int,int>, ll>cost;
ll rez[60000], bf[250250];
bool viz[60000];
void bfs()
{
	bf[1] = 1;
	int st = 1, dr = 1;
	while(st <= dr)
	{
		for (vector<ll>::iterator it = a[bf[st]].begin(); it != a[bf[st]].end(); it++)
		{
			rez[*it] = min(rez[*it],rez[bf[st]] + cost[make_pair(bf[st],*it)]);
			dr++;
			bf[dr] = *it;
		}
		st++;
	}
}
int main()
{
	ifstream cin("dijkstra.in");
	ofstream cout("dijkstra.out");
	cin >> n >> m;
	for (int i = 0; i < m; i++)
	{
		cin >> x >> y >> c;
		a[x].push_back(y);
		cost[make_pair(x,y)] = c;
	}
	for (int i = 0; i <= n; i++) rez[i] = 1LL << 60;
	rez[1] = 0;
	bfs();
	for (int i = 2; i <= n; i++) cout << rez[i] << " ";
}