Pagini recente » Cod sursa (job #1324696) | Cod sursa (job #1117063) | Cod sursa (job #453794) | Cod sursa (job #875008) | Cod sursa (job #2502303)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m;
short a[30001][30001];
int d[50001],pre[50001];
bool viz[50001];
void Citire()
{
int x,y,c;
f>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
a[i][j] = INFINITY;
for(int i=1;i<=m;++i)
{
f>>x>>y>>c;
a[x][y] = a[y][x] = c;
}
for(int i=1;i<=n;++i)
{
d[i] = a[1][i];
pre[i] = 1;
}
pre[1] = 0;
d[1] = 0;
viz[1] = true;
f.close();
}
void Determinare()
{
for(int i=1;i<n;++i)
{
int dMin = INFINITY,VfMin;
for(int j=1;j<=n;++j)
if(!viz[j] && dMin> d[j])
{
dMin = d[j];
VfMin = j;
}
viz[VfMin] = true;
for(int j=1;j<=n;++j)
if(!viz[j] && d[j] > dMin + a[VfMin][j])
{
pre[j] = VfMin;
d[j] = dMin + a[j][VfMin];
}
}
}
int main()
{
Citire();
Determinare();
for(int i=2;i<=n;++i)
g<<d[i]<<" ";
return 0;
}