Cod sursa(job #3373654)

Utilizator popescu_georgePopescu George popescu_george Data 7 noiembrie 2026 14:28:44
Problema Algoritmul lui Dijkstra Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
#include<vector>
#include<queue>
#include<bitset>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
const int M=2e9,N=1e5+1;
vector<pair<int,int>> a[N];
bitset<N> c;
int d[N],e[N];
struct C {
	bool operator()(int i,int j) {
		return d[i]>d[j];
	}
};
priority_queue<int,vector<int>,C> b;
int main()
{
	int m,n;
	for(cin>>n>>m;m--;) {
		int i,j,k;
		cin>>i>>j>>k,a[i].push_back({j,k});
	}
	for(int i=2;i<=n;d[i++]=M);
	for(c[1]=1,b.push(1);!b.empty();b.pop()) {
		int i=b.top();
		for(auto p:a[i])
			if(long long j=d[i]+p.second;d[p.first]>j&&(d[p.first]=j,!c[p.first]))
				c[p.first]=1,b.push(p.first);
	}
	for(int i=2;i<=n;cout<<(d[i]<M?d[i]:0)<<' ',++i);
	return 0;
}