Pagini recente » Cod sursa (job #226499) | Cod sursa (job #2881850) | Cod sursa (job #3354847) | Borderou de evaluare (job #1790321) | Cod sursa (job #3321172)
#include <bits/stdc++.h>
#define y first
#define c second
using namespace std;
int N,M, djk[50005];
vector<pair<int,int>> arce[250005];
void Dijkstra()
{
priority_queue<pair<int,int>> pq;
pq.push({1,0});
while(pq.empty()==0)
{
pair<int,int> nod;
nod = pq.top();
pq.pop();
if(nod.c != djk[nod.y])
{
continue;
}
for(int i=0;i<arce[nod.y].size();i++)
{
///ma duc prin vecini
if(djk[arce[nod.y][i].y] ==0 || djk[arce[nod.y][i].y] > nod.c+ arce[nod.y][i].c)
{
djk[arce[nod.y][i].y]=nod.c+ arce[nod.y][i].c;
pq.push({arce[nod.y][i].y, djk[arce[nod.y][i].y]});
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
cin>>N>>M;
int x,z,t;
for(int i=1;i<=M;i++)
{
cin>>x>>z>>t;
arce[x].push_back({z,t});
}
Dijkstra();
for(int i=2;i<=N;i++)
{
cout<<djk[i]<<' ';
}
return 0;
}