Pagini recente » Cod sursa (job #3198776) | Cod sursa (job #3126505) | Cod sursa (job #710699) | Cod sursa (job #2565527) | Cod sursa (job #1731976)
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#define INF 2000000000
#define MaxN 100001
using namespace std;
int N,M,v[MaxN]={},start,final,val;
vector<pair<int,int>>List[MaxN];
queue<int>Queue;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=N;i++)
v[i]=INF;
v[1]=0;
Queue.push(1);
for(int i=1;i<=M;i++)
{
scanf("%d%d%d",&start,&final,&val);
List[start].push_back(make_pair(final,val));
}
while(!Queue.empty())
{
for(int i=0;i<List[Queue.front()].size();i++)
if(v[List[Queue.front()][i].first]>v[Queue.front()]+List[Queue.front()][i].second)
Queue.push(List[Queue.front()][i].first),v[List[Queue.front()][i].first]=v[Queue.front()]+List[Queue.front()][i].second;
Queue.pop();
}
for(int i=2;i<=N;i++)
if(v[i]==INF)
printf("0 ");
else
printf("%d ",v[i]);
return 0;
}