Pagini recente » Cod sursa (job #1747322) | Cod sursa (job #191225) | Cod sursa (job #1343253) | Cod sursa (job #2512253) | Cod sursa (job #2201597)
#include <iostream>
#include <vector>
#include <fstream>
#include <utility>
#include <set>
#include <iterator>
#include <queue>
#include <algorithm>
using namespace std;
int s=0,n,m;
int muchii [250002][3];
int tati[50002], d[50002], v[50002];
void citire() {
ifstream fin("dijkstra.in");
fin>>n>>m;
for (int i=0; i<m; i++) {
int t1, t2, c;
fin>>t1>>t2>>c;
t1--;
t2--;
muchii[i][0]=t1;
muchii[i][1]=t2;
muchii[i][2]=c;
//muchii[t2].push_back(make_pair(t1,c)); //daca graful e neorientat
}
}
void bellman_ford () {
for (int i=1; i<n; i++) {
d[i]=1000000000;
}
d[s]=0;
tati[s]=s;
int k=0;
while (k<n) {
for (int i=0; i<m; i++) {
int f=muchii[i][0], s=muchii[i][1], c=muchii[i][2];
if (d[s]>d[f]+c) {
d[s]=d[f]+c;
tati[s]=f;
}
}
k++;
}
}
int main()
{
citire();
for (int i=0; i<m; i++) {
cout<<muchii[i][0]+1<<" "<<muchii[i][1]+1<<" "<<muchii[i][2]<<endl;
}
cout<<endl<<endl;
//djkistra();
cout<<endl<<endl;
//cout<<"Sursa: "<<s+1<<endl;
bellman_ford();
ofstream fout("dijkstra.out");
for (int i=1; i<n; i++) {
if (d[i]==1000000000) {d[i]=0;}
cout<<"Nodul "<<i+1<<" cu tatal "<<tati[i]+1<<" si distanta "<<d[i]<<endl;
fout<<d[i]<<" ";
}
return 0;
}