Pagini recente » Cod sursa (job #2670521) | Cod sursa (job #775852) | Cod sursa (job #2115093) | Cod sursa (job #3001540) | Cod sursa (job #847185)
Cod sursa(job #847185)
#include<cstdio>
#include<algorithm>
#include<deque>
#include<vector>
#include<cstring>
using namespace std;
int viz[50005],cost[50005],x,y,a,b,n,i,j,k,m;
vector<pair<int,int > >v[50005];
deque<int>c;
void dj(int x)
{
viz[x]=1;
c.push_back(x);
while (!c.empty())
{
x=c.front();
c.pop_front();
for (j=0;j<v[x].size();j++)
{
a=v[x][j].first;
b=v[x][j].second;
if (!viz[a]) viz[a]=1,c.push_back(a),cost[a]=cost[x]+b;else
if (cost[a]>cost[x]+b) cost[a]=cost[x]+b,c.push_back(a);
}
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=m;i++) scanf("%d %d %d",&a,&b,&k),v[a].push_back(make_pair(b,k));
dj(1);
for (i=2;i<=n;i++) printf("%d ",cost[i]);
return 0;
}