Pagini recente » Cod sursa (job #1057465) | Cod sursa (job #2445191) | Cod sursa (job #1242915) | Cod sursa (job #2816473) | Cod sursa (job #2551728)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N,M;
int Cost[50005];
vector< pair<int,int> >Ad[50005];
void citire()
{
int x,y,z;
fin>>N>>M;
for(int i=1;i<=M;i++)
{
fin>>x>>y>>z;
Ad[x].push_back({y,z});
if(x==1)
Cost[y]=z;
}
}
void dijkstra(int x)
{
deque<int>Q;
int P,U;
Q.push_front(1);
while(!Q.empty())
{
P=Q.front();
Q.pop_front();
for(unsigned i=0;i<Ad[P].size();i++)
if(Cost[Ad[P][i].first]==0 || Cost[Ad[P][i].first]>Cost[P]+Ad[P][i].second)
{
Cost[Ad[P][i].first]=Cost[P]+Ad[P][i].second;
Q.push_front(Ad[P][i].first);
}
else
Q.push_back(Ad[P][i].first);
}
}
void afisare()
{
for(int i=2;i<=N;i++)
fout<<Cost[i]<<" ";
}
int main()
{
citire();
dijkstra(1);
afisare();
return 0;
}