Cod sursa(job #3250369)

Utilizator cezarica23cezar tambozi cezarica23 Data 20 octombrie 2024 14:26:08
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int>> v[1000001];
int vizitat[10000001];
int distanta[10000001];
int n,start;
priority_queue<pair<int,int>> q;
int main()
{
	fin>>n>>start;
	int x,y,weight;
	while(fin>>x>>y>>weight)
	{
		v[x].push_back({y,weight});
	}
	for(int i=1; i<=n; ++i) {
		distanta[i]=10000001;
	}
	distanta[1]=0;
	q.push({0,1});
	while(!q.empty())
	{
		int nod = q.top().second;
		q.pop();
		if(vizitat[nod]==0)
		{

			vizitat[nod]=1;
			for(auto e : v[nod])
			{

				int yy=e.first;
				int greutate=e.second;
				if(distanta[yy]>distanta[nod]+greutate)
				{
					distanta[yy]=distanta[nod]+greutate;
					q.push({-distanta[yy],yy});
				}
			}
		}
	}
	for(int i = 2; i <= n; i++)
	{
    		if(distanta[i] == 10000001)
    			fout << 0 << ' ';
    		else
    			fout << distanta[i] << ' ';
	}
	return 0;
}