Pagini recente » Profil Vali_Deaconu | Monitorul de evaluare | Cod sursa (job #702978) | christmas-balls | Cod sursa (job #1243485)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
struct nod
{
int vecin;
int cost;
};
vector <nod> graf[50001];
int d[50001];
bool vizitat[50001];
queue <int> coada;
int main()
{
int n,m,i,x;
nod y;
ifstream f("dijkstra.in");
f>>n>>m;
for (i=0; i<m; i++) {
f>>x>>y.vecin>>y.cost;
graf[x].push_back(y);
}
/*for (i=1; i<=n; i++) {
for (int j=0; j<graf[i].size(); j++)
cout<<graf[i][j].vecin<<' '<<graf[i][j].cost<<';';
cout<<'\n';
}*/
d[1]=0;
vizitat[1]=true;
coada.push(1);
int Alpha,Bravo;
while (!coada.empty())
{
Alpha=coada.front();
for (i=0; i<graf[Alpha].size(); i++) {
Bravo=graf[Alpha][i].vecin;
if (!vizitat[Bravo]) {
vizitat[Bravo]=true;
coada.push(Bravo);
d[Bravo]=d[Alpha] + graf[Alpha][i].cost;
}
else if (d[Alpha] + graf[Alpha][i].cost < d[Bravo]) d[Bravo]=d[Alpha] + graf[Alpha][i].cost;
}
coada.pop();
}
ofstream g("dijkstra.out");
for (i=2; i<=n; i++)
g<<d[i]<<' ';
return 0;
}