Pagini recente » Cod sursa (job #2464045) | Cod sursa (job #875715) | Cod sursa (job #2691212) | Cod sursa (job #2790215) | Cod sursa (job #1325106)
#include <stdio.h>
#include <vector>
#include <utility>
#include <queue>
#define NMax 50001
#define INF 1<<28
using namespace std;
int n,m,v,d[NMax],x,y,c;
std::vector< std::pair<int,int> > G[NMax];
std::queue< std::pair<int,int> > coada;
void dijkstra(int x)
{
for(int i=1;i<=n;++i)d[i] = INF;
d[x] = 0;
coada.push(std::make_pair(x,0));
while(!coada.empty())
{
int nod = (coada.front()).first;
int val = (coada.front()).second;
coada.pop();
for(int i=0;i<G[nod].size();++i)
{
if(d[G[nod][i].first] > val + G[nod][i].second)
{
d[G[nod][i].first] = val + G[nod][i].second;
coada.push(std::make_pair(G[nod][i].first,d[G[nod][i].first]));
}
}
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i)
{
scanf("%d %d %d",&x,&y,&c);
G[x].push_back(std::make_pair(y,c));
}
dijkstra(1);
for(int i=2;i<=n;++i)
{
if(d[i]==INF)printf("0 ");
else printf("%d ",d[i]);
}
return 0;
}