Pagini recente » Cod sursa (job #297836) | Cod sursa (job #1528299) | Cod sursa (job #1587923) | Cod sursa (job #666545) | Cod sursa (job #1649563)
#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;
bool b[n], kesz=false;
for (int i=0;i<n;i++) {d[i]=nt[i0][i];b[i]=false;}
b[i0]=true;
while (!kesz) {
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];
i0=mini;
b[mini]=true;
}
kesz=true;
for (int i=0;i<n;i++) if (!b[i]) kesz=false;
}
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";}
}