Pagini recente » Cod sursa (job #1864504) | Cod sursa (job #2196008) | Cod sursa (job #1359607) | Cod sursa (job #243785) | Cod sursa (job #2617763)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,a,b,c,d[25001];
vector<pair<int,int>>v[25001];
const int INF=(1<<31)-1;
void adauga(int a,int b,int c)
{
v[a].push_back({c,b});
}
int main()
{
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
fin>>n>>m;
fill(d+1,d+n+1,INF);
d[1]=0;
for(int i=1;i<=m;i++)
{
fin>>a>>b>>c;
adauga(a,b,c);
}
pq.push({0,1});
while(!pq.empty())
{
pair<int,int>nod=pq.top();
pq.pop();
int q=nod.second;
if(d[q]!=nod.first)
continue;
for(int i=0;i<(int)v[q].size();i++)
{
if(d[q]+v[q][i].first<d[v[q][i].second])
{
d[v[q][i].second]=d[q]+v[q][i].first;
pq.push({v[q][i].first+nod.first,v[q][i].second});
}
}
}
for(int i=2;i<=n;i++)
fout<<d[i]<<" ";
}