Pagini recente » Cod sursa (job #3203883) | Cod sursa (job #161337) | Cod sursa (job #949864) | Cod sursa (job #3155787) | Cod sursa (job #2422712)
#include <iostream>
#include <fstream>
#include <vector>
#define oo 0x3f3f3f3f
using namespace std;
int extrag(int **d, bool **viz, int n){
int min = oo;
int rez = 1;
for(int i = 1;i <= n;i++){
if((*viz)[i] == 0){
if((*d)[i] < min){
min = (*d)[i];
rez = i;
}
}
}
(*viz)[rez] = 1;
return rez;
}
int main()
{
int n, m, st;
int x, y, cost;
int nr_viz = 0;
ifstream f("dijkstra.in");
//ifstream f("E:\\FMI\\AG\\lab3\\date.in");
ofstream g("dijkstra.out");
f>>n>>m;
vector <vector < pair<int, int > > >G(n + 1);
for(int i = 0;i < m;i++){
f>>x>>y>>cost;
G[x].push_back(make_pair(y, cost));
}
int *d = new int[n + 1];
int *t = new int[n + 1];
bool *viz = new bool[n + 1];
for(int i = 0;i <= n;i++){
d[i] = oo;
t[i] = 0;
viz[i] = 0;
}
st = 1;
d[st] = 0;
t[st] = 0;
while(nr_viz < n){
int u = extrag(&d, &viz, n);
nr_viz++;
pair< int, int > v;
for(auto v : G[u]){
if(d[v.first] > d[u] + v.second){
d[v.first] = d[u] + v.second;
t[v.first] = u;
}
}
}
for(int i = 2;i <= n;i++){
if(d[i] == 00)
cout<<0<<" ";
else
cout<<d[i]<<" ";
}
}