Pagini recente » Istoria paginii runda/oji3_sim | Istoria paginii runda/9i_beclean/clasament | Cod sursa (job #2732263) | Rating Alexandru Gabriel (alexandru021) | Cod sursa (job #390650)
Cod sursa(job #390650)
#include <iostream>
# define inf 10000
using namespace std;
int mat[1000][1000], n,m;
void citire()
{
freopen("dijkstra.in", "r", stdin);
scanf("%d%d", &n, &m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
mat[i][j] = inf;
for(int i=1;i<=m;i++)
{
int a, b,c;
scanf("%d%d%d", &a, &b,&c);
mat[a][b] = c;
}
}
void lucru()
{
int viz[1000]= {0}, pre[1000]={0}, d[1000]={0};
for(int i=2;i<=n;i++)
{
d[i] = mat[1][i];
pre[i] = 1;
}
viz[1] = 1;
pre[1] = 0;
int pozmin;
for(int j=1;j<=n;j++)
{
int dmin = inf;
for(int i=2;i<=n;i++)
if(viz[i] == 0 && dmin > d[i])
{
dmin = d[i];
pozmin = i;
}
viz[pozmin] = 1;
for(int i=1;i<=n;i++)
if(viz[i] == 0 && d[i]> dmin + mat[pozmin][i])
{
d[i] = dmin + mat[pozmin][i];
pre[i] = pozmin;
}
}
freopen("dijkstra.out", "w", stdout);
for(int k=2;k<=n;k++)
{
printf("%d ",d[k]);
}
}
int main()
{
citire();
lucru();
return 0;
}