Pagini recente » Cod sursa (job #263152) | Cod sursa (job #1601599) | Cod sursa (job #604861) | Cod sursa (job #1766151) | Cod sursa (job #1513849)
#include <fstream>
#include <vector>
#define NMax 50005
// 100000000
using namespace std;
int D[NMax],N,M;
vector<pair<int,int>> v[NMax];
void Read(){
ifstream fin("dijkstra.in");
fin >> N >> M;
int x,y,z;
for(int i=0;i<M;i++){
fin >> x >> y >> z;
v[x].push_back(make_pair(y,z));
v[y].push_back(make_pair(x,z));
}
for(int i=1;i<=N;i++){
D[i]=100000000; if(i==1) D[i]=0;
}
}
void Dijkstra(int s){
int lmax=100000,y=NMax;
pair<int,int> p;
for(int i=0;i<(int)v[s].size();i++)
{
p=v[s][i];
int alt=D[s]+p.second;
if(alt<D[p.first]){
D[p.first]=alt;
if(lmax>alt){
lmax=alt;
y=p.first;
}
}
}
if(y!=NMax) Dijkstra(y);
}
void Print(){
ofstream fout("dijkstra.out");
for(int i=2;i<=N;i++){
//cout << D[i] << ' ';
fout << D[i] << ' ';
}
}
int main()
{
Read();
//for(int i=1;i<=N;i++){ cout << "Pentru " << i << " : ";
//for(int j=0;j<(int)v[i].size();j++){
// cout << v[i][j].first << '/' << v[i][j].second << ' ';
//} cout << '\n'; } // muchiile
Dijkstra(1);
Print();
}