Pagini recente » Cod sursa (job #2035526) | Cod sursa (job #2816712) | Cod sursa (job #424520) | Cod sursa (job #2444730) | Cod sursa (job #1649551)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("dijkstra.in");
ofstream w("dijkstra.out");
int n, m, nt[2000][2000], d[1999];
void beolvas() {
f>>n>>m;
int x, y, r;
for (int i=0;i<n;i++) for (int j=0;j<n;j++) nt[i][j]=0;
for (int i=0;i<m;i++) {
f>>x>>y>>r;
nt[x-1][y-1]=r;
nt[y-1][x-1]=r;
}
}
void bejaras() {
int i0=0, min, mini;
queue <int> vsor;
vsor.push(i0);
bool b[n];
for (int i=0;i<n;i++) {d[i]=nt[i0][i];b[i]=false;}
b[i0]=true;
while (!vsor.empty()) {
i0=vsor.front();
vsor.pop();
min=1001;
mini=n;
for (int i=0;i<n;i++) {
if (min>nt[i][i0] && !b[i] && nt[i][i0]!=0) {
min=nt[i][i0];
mini=i;
}
}
//cout<<"m ";
if (mini!=n) {
if (d[mini]>min+d[i0] || d[mini]==0) d[mini]=min+d[i0];
vsor.push(mini);
b[mini]=true;
}
}
for (int i=1;i<n;i++) w<<d[i]<<" ";
}
int main()
{
beolvas();
bejaras();
f.close();
w.close();
//for (int i=0;i<n;i++) cout<<d[i]<<' ';
//for (int i=0;i<n;i++) {for (int j=0;j<n;j++) cout<<nt[i][j]<<' '; cout<<"\n";}
}