Pagini recente » Cod sursa (job #797493) | Cod sursa (job #1386281) | Cod sursa (job #2045867) | Cod sursa (job #1628720) | Cod sursa (job #2143639)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
typedef pair<int,int> ii;
const int inf=100000000,nmax=50000;
vector <ii> G[nmax+5];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m, u,v,w;
scanf("%d%d",&n,&m);
ii aux;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
aux.first=w;
aux.second=v;
G[u].push_back(aux);
}
vector<int> dist(n,inf);
dist[1]=0;
priority_queue<ii, vector<ii>, greater<ii> > pq;
pq.push(ii(0,1));
ii asdf;
while(!pq.empty())
{
asdf=pq.top();
pq.pop();
int d=asdf.first,u=asdf.second;
if(d>dist[u])
continue;
for(int j=0;j<G[u].size();j++)
{
int v=G[u][j].second,duv=G[u][j].first;
if(dist[u]+duv<dist[v])
{
dist[v]=dist[u]+duv;
pq.push(ii(dist[v],v));
}
}
}
for(int i=2;i<=n;i++)
printf("%d ",dist[i]);
return 0;
}