Pagini recente » Cod sursa (job #1450113) | Cod sursa (job #618405) | Cod sursa (job #2709630) | Cod sursa (job #2744757) | Cod sursa (job #3250369)
#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;
}