Pagini recente » Cod sursa (job #1565939) | Cod sursa (job #2302272) | Cod sursa (job #1431921) | Cod sursa (job #797449) | Cod sursa (job #2652945)
#include <fstream>
#include <climits>
#include <queue>
using namespace std;
vector<pair<int, int>> v[50005];
priority_queue<pair<int, int>> 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();
vs[nr]=1;
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 && vs[nr2]==0)
{
dist[nr2]=d2;
pq.push(make_pair(d2,nr2));
}
}
}
}
int main()
{
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n,m,d,x,y;
cin >> n >> m;
for(int i=2;i<=n;i++)
dist[i]=INT_MAX;
for(int i=0;i<m;i++)
{
cin >> 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;
cout << dist[i] << " ";
}
return 0;
}