Pagini recente » Cod sursa (job #1643967) | Cod sursa (job #1013860) | Cod sursa (job #2082619) | tema | Cod sursa (job #2652953)
#include <fstream>
#include <iostream>
#include <climits>
#include <queue>
using namespace std;
vector<pair<int, int>> v[50005];
typedef pair<int, int> pi;
priority_queue<pi, vector<pi>, greater<pi>> pq;
int dist[50005];
bool vs[50005];
void dijkstra(int start)
{
pq.push(make_pair(0,start));
while(pq.empty()==false)
{
int d=pq.top().first;
int nr=pq.top().second;
pq.pop();
if(dist[nr]<d)
continue;
for(int i=0;i<v[nr].size();i++)
{
int d2=d+v[nr][i].first;
int nr2=v[nr][i].second;
if(dist[nr2]>d2)
{
dist[nr2]=d2;
pq.push(make_pair(d2,nr2));
}
}
}
}
int main()
{
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m,d,x,y;
in >> n >> m;
for(int i=2;i<=n;i++)
dist[i]=INT_MAX;
for(int i=0;i<m;i++)
{
in >> x >> y >> d;
v[x].push_back(make_pair(d,y));
}
dijkstra(1);
for(int i=2;i<=n;i++)
{
if(dist[i]==INT_MAX)
dist[i]=0;
out << dist[i] << " ";
}
return 0;
}