Pagini recente » Cod sursa (job #440390) | Cod sursa (job #316703) | Cod sursa (job #418171)
Cod sursa(job #418171)
#include<stdio.h>
#include<vector>
#define INF 2000000000
#define Nmax 50005
using namespace std;
vector < pair <int,int> > g[Nmax];
int n,m,x,y,z,i,j,N,dmin[Nmax],coada[Nmax],dr,viz[Nmax];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d %d %d",&x,&y,&z);
g[x].push_back(make_pair(y,z));
}
for(i=2;i<=n;i++)
dmin[i]=INF;
coada[1]=1;
dr=1;
for(i=1;i<=dr;i++)
{
viz[coada[i]]=1;
N=g[coada[i]].size();
for(j=0;j<N;j++)
{
if(!viz[g[coada[i]][j].first])
{
if(g[coada[i]][j].second+dmin[coada[i]]<dmin[g[coada[i]][j].first])
dmin[g[coada[i]][j].first]=g[coada[i]][j].second+dmin[coada[i]];
coada[++dr]=g[coada[i]][j].first;
}
}
}
for(i=2;i<=n;i++)
{
if(dmin[i]==INF)
printf("0 ");
else printf("%d ",dmin[i]);
}
return 0;
}