Pagini recente » Cod sursa (job #1485582) | Cod sursa (job #2937458) | Cod sursa (job #1538240) | Cod sursa (job #1579290) | Cod sursa (job #2929222)
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define pp pair<int,int>
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
const int N=5e4+5;
vector<pp> la[N];
int cost[N],dist[N];
bool vizitat[N];
void dijkstra(int start, int n)
{
for(int i=1;i<=n;i++)
if(i!=start) dist[i]=INT_MAX;
priority_queue<pp,vector<pp>,greater<pp> > pq;
vizitat[start]=1;
pq.push({0,start});
while(!pq.empty())
{
int nod=pq.top().second;
int cost=pq.top().first;
pq.pop();
if(dist[nod] != cost) continue;
for(int i=0;i<la[nod].size();i++)
{
pp vecin=la[nod][i];
if(cost + vecin.second < dist[vecin.first])
{
dist[vecin.first]=cost + vecin.second;
pq.push({dist[vecin.first],vecin.first});
}
}
}
}
int main()
{
int n,m; in>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,c; in>>x>>y>>c;
la[x].pb({y,c});
}
dijkstra(1,n);
for(int i=2;i<=n;i++)
if(dist[i] == INT_MAX) out<<0<<' ';
else out<<dist[i]<<' ';
}