Pagini recente » Cod sursa (job #548861) | Cod sursa (job #304016) | Cod sursa (job #111732) | Cod sursa (job #2843332) | Cod sursa (job #2719607)
#include <iostream>
#include <fstream>
#include <forward_list>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,a,b,c,viz[50005];
typedef pair < int, int > ipair;
forward_list < ipair > adj[50005];
priority_queue < ipair, vector < ipair >, greater < ipair > > pq;
vector < int > dist (50005, 1000000001);
void dijkstra(int src)
{
dist[src]=0;
pq.push(make_pair(0,src));
while(!pq.empty())
{
int u=pq.top().second;
pq.pop();
for(auto it=adj[u].begin();it!=adj[u].end();it++)
{
int v=(*it).first;
int weight=(*it).second;
if(dist[v]>dist[u]+weight)
{
dist[v]=dist[u]+weight;
pq.push(make_pair(dist[v],v));
}
}
}
}
int main()
{
fin >> n >> m;
for(;m;--m)
{
fin >> a >> b >> c;
adj[a].push_front(make_pair(b,c));
}
dijkstra(1);
for(int i=2;i<=n;i++)
fout << dist[i] << " ";
return 0;
}