Cod sursa(job #1896250)

Utilizator ButmalaiDanButmalai Dan ButmalaiDan Data 28 februarie 2017 16:15:51
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, m, x, y, c;
vector<int> a[250250];
map<pair<int,int>, int>cost;
int rez[60000];
queue<int> q;
void bfs()
{
	q.push(1);
	while(!q.empty())
	{
		for (vector<int>::iterator it = a[q.front()].begin(); it != a[q.front()].end(); it++)
		{
			rez[*it] = min(rez[*it],rez[q.front()] + cost[make_pair(q.front(),*it)]);
			q.push(*it);
		}
		q.pop();
	}
}
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] = 1 << 30;
	rez[1] = 0;
	bfs();
	for (int i = 2; i <= n; i++) cout << (rez[i] == 1 <<30 ? 0:rez[i]) << " ";
}