Pagini recente » Cod sursa (job #2823814) | Cod sursa (job #2426589) | Cod sursa (job #1133174) | Cod sursa (job #2287515) | Cod sursa (job #1355043)
#include <fstream>
#include <vector>
#include <queue>
#define INF 1000000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int> > v[50001];
queue<int> q;
int dist[50001],pred[50001],s[50001];
int n,m,i,j,nod,x,y,w;
int main()
{
fin>>n>>m;
for (i=1;i<=m;i++)
{
fin>>x>>y>>w;
v[x].push_back(make_pair(y,w));
}
for (i=2;i<=n;i++)
dist[i]=INF;
q.push(1);
s[1]=1;
while (q.empty() == false)
{
nod=q.front();
q.pop();
s[nod]=0;
for (vector<pair<int,int> >::iterator it = v[nod].begin(); it != v[nod].end(); ++it)
{
if (dist[nod]+(*it).second < dist[(*it).first])
{
dist[(*it).first] = dist[nod]+(*it).second;
if (s[(*it).first]==0)
{
s[(*it).first]=1;
q.push((*it).first);
}
}
}
}
for (i=2;i<=n;i++)
if (dist[i]!=INF)
fout<<dist[i]<<" ";
else
fout<<"0 ";
return 0;
}