Pagini recente » Cod sursa (job #2808981) | Cod sursa (job #2896366) | Cod sursa (job #1376669) | Cod sursa (job #126672) | Cod sursa (job #759818)
Cod sursa(job #759818)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
#define maxn 100001
#define INF 1000
vector <int> vecini[maxn] ;
vector <int> cost[maxn] ;
int n,m ;
int sel[maxn] ;
int d[maxn] ;
int nr ;
void rezolvare(int nod)
{
if( nr == n )
return ;
sel[nod] = 1 ;
++ nr ;
for(size_t i=0;i<vecini[nod].size();++i)
{
int nod_act = vecini[nod][i] ;
d[nod_act] = min ( d[nod_act] , d[nod] + cost[nod][i] ) ;
}
int min = INF ;
int ind_nod ;
for(int i=1;i<=n;++i)
{
if( d[i] < min && sel[i] == 0 )
{
min = d[i] ;
ind_nod = i ;
}
}
rezolvare ( ind_nod ) ;
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i)
{
int a,b,c ;
scanf("%d%d%d",&a,&b,&c);
vecini[a].push_back(b) ;
cost[a].push_back(c) ;
}
for(int i=2;i<=n;++i)
d[i] = INF ;
rezolvare(1) ;
for(int i=2;i<n;++i)
printf("%d ",d[i]);
printf("%d\n",d[n]);
return 0;
}