Pagini recente » Cod sursa (job #1497953) | Cod sursa (job #925518) | Cod sursa (job #1874930) | Cod sursa (job #117833) | Cod sursa (job #2458912)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
#define MAX 99999999
vector < pair < int, int > > vec[50001];
queue < int > q;
int sol[50001],n,m;
void read()
{
int i,a,b,c;
cin>>n>>m;
for(i=1; i<=m; i++)
{
cin>>a>>b>>c;
vec[a].push_back({b,c});
vec[b].push_back({a,c});
}
for(i=1; i<=n; i++)
sol[i]=MAX;
}
void dijkstra()
{
int i,j,nod,cost2,nod2;
q.push(1);
sol[1]=0;
while(q.empty()==false)
{
nod=q.front();
q.pop();
for(i=0; i<vec[nod].size(); i++)
{
nod2=vec[nod][i].first;
cost2=vec[nod][i].second;
if(sol[nod2]>sol[nod]+cost2)
{
q.push(nod2);
sol[nod2]=sol[nod]+cost2;
}
}
}
}
void afis_sol()
{
int i;
for(i=2; i<=n; i++)
{
if(sol[i]!=MAX)
cout<<sol[i]<<" ";
else
cout<<0<<" ";
}
}
int main()
{
read();
dijkstra();
afis_sol();
return 0;
}