Pagini recente » Cod sursa (job #2707961) | Cod sursa (job #1963454) | Cod sursa (job #1218099) | Cod sursa (job #581042) | Cod sursa (job #2719606)
#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, 1000005);
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;
}