Pagini recente » Cod sursa (job #1074783) | Cod sursa (job #45490) | Cod sursa (job #558217) | Cod sursa (job #2295278) | Cod sursa (job #3165412)
#include <bits/stdc++.h>
#define NN 50000
#define INF 1000000005
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
struct Muchie
{
int nod, dis;
};
int n, m, a;
Muchie b;
vector <Muchie> v[NN];
int d[NN], pre[NN], vis[NN];
Muchie varfminim()
{
Muchie x;
x.dis = INF;
for(int i = 1 ; i <= n ; i++)
{
if(vis[i] == 0 && x.dis > d[i])
{
x.dis = d[i];
x.nod = i;
}
}
return x;
}
int main()
{
fin >> n >> m;
for(int i = 1 ; i <= m ; i++)
{
fin >> a >> b.nod >> b.dis;
v[a].push_back(b);
}
for(int i = 1 ; i <= n ; i++)
{
d[i] = INF;
pre[i] = 1;
}
d[1] = 0;
pre[1] = 0;
for(int j = 1 ; j <= n ; j++)
{
Muchie mn = varfminim();
vis[mn.nod] = 1;
for(int i = 0 ; i < v[mn.nod].size() ; i++)
{
b = v[mn.nod][i];
if(vis[b.nod] == 0 && d[b.nod] > mn.dis + b.dis)
{
pre[b.nod] = mn.nod;
d[b.nod] = mn.dis + b.dis;
}
}
}
for(int i = 2 ; i <= n ; i++)
{
if(d[i] == INF)
d[i] = 0;
fout << d[i] << " ";
}
return 0;
}