Pagini recente » Cod sursa (job #92843) | Cod sursa (job #2551314) | Cod sursa (job #2877263) | Cod sursa (job #2164792) | Cod sursa (job #3220120)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int Nmax = 30005;
const int Mmax = 100035;
struct muchie{
int nod, cost;
};
struct nodes{
vector<muchie> vecini;
};
int dist[Nmax];
int nr_noduri, nr_muchii, start, finish;
nodes noduri[Nmax];
queue<int> q;
void citire(){
int oras1, oras2, distanta;
fin >> nr_noduri >> nr_muchii;
fin >> start >> finish;
for(int i = 1; i <= nr_muchii; i++){
fin >> oras1 >> oras2 >> distanta;
noduri[oras1].vecini.push_back({oras2, distanta});
noduri[oras2].vecini.push_back({oras1, -distanta});
}
}
void bfs(){
int nod;
q.push(start);
dist[start] = 0;
while(!q.empty()){
nod = q.front();
q.pop();
for(muchie vecin : noduri[nod].vecini){
if(dist[vecin.nod] == 0 && vecin.nod != start){
dist[vecin.nod] = dist[nod] + vecin.cost;
q.push(vecin.nod);
}
}
}
}
void afisare(){
fout << dist[finish];
}
int main(){
citire();
bfs();
afisare();
return 0;
}