Pagini recente » Borderou de evaluare (job #3355049) | Borderou de evaluare (job #1283429) | Borderou de evaluare (job #1842525) | Borderou de evaluare (job #2268329) | Cod sursa (job #3321189)
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define y first
#define c second
using namespace std;
int N,M, djk[50005];
vector<pair<int,int>> arce[250005];
void Dijkstra()
{
memset(djk,INF,sizeof(djk));
priority_queue<pair<int,int>> pq;
djk[1]=0;
pq.push({1,0});
// cout<<INF;
while(pq.empty()==0)
{
pair<int,int> nod;
nod = pq.top();
pq.pop();
if(nod.c != djk[nod.y])
{
continue;
}
for(size_t i=0; i < arce[nod.y].size(); i++)
{
///ma duc prin vecini
if(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()
{
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
ios::sync_with_stdio(false);
cin.tie(nullptr);
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;
}