Pagini recente » Cod sursa (job #1003024) | Cod sursa (job #410067) | Cod sursa (job #1865089) | Cod sursa (job #1505640) | Cod sursa (job #1974028)
#include<bits/stdc++.h>
#define inf INT_MAX/2
using namespace std;
long n,m,i,j,c[1001][1001],x,y,p,d[1001],viz[1001],dmin,vfmin;
int main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
cin>>n>>m;
for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)c[j][i]=c[i][j]=inf,c[i][i]=0;
for(i=1;i<=m;i++)
{
cin>>x>>y>>p;
c[x][y]=p;
}
for(i=1;i<=n;i++)d[i]=c[1][i];
viz[1]=1;
for(i=1;i<=n-1;i++)
{
dmin=inf*2;
for(j=1;j<=n;j++)if(d[j]<dmin && !viz[j])dmin=d[j],vfmin=j;
viz[vfmin]=1;
for(j=1;j<=n;j++)if(!viz[j] && d[j]>dmin+c[vfmin][j])d[j]=dmin+c[vfmin][j];
}
for(i=2;i<=n;i++)
{
if(d[i]<inf)cout<<d[i]<<" ";
else cout<<"0 ";
}
return 0;
}