Pagini recente » Cod sursa (job #1673835) | Cod sursa (job #2820755) | Cod sursa (job #2829102) | Cod sursa (job #2722907) | Cod sursa (job #3169700)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct vecin{
int nod;
int cost;
};
int distante[30001];
vector<vecin> vecini[30005];
int x, y;
void bfs(int x){
queue<int> q;
q.push(x);
while (!q.empty()){
int frn = q.front();
q.pop();
for (int i = 0; i < vecini[frn].size(); i++) {
vecin vec = vecini[frn][i];
if (vec.nod != x && distante[vec.nod] == 0) {
distante[vec.nod] = distante[frn] + vec.cost;
q.push(vec.nod);
}
if (vec.nod == y)
return;
}
}
}
int main() {
int sate, muchii;
fin >> sate >> muchii >> x >> y;
if (x > y)
swap(x, y);
distante[x] = 0;
for (int i = 1 ; i <= muchii; i++){
int nod1, nod2, cost;
fin >> nod1 >> nod2 >> cost;
vecini[nod1].push_back({nod2, cost});
vecini[nod2].push_back({nod1, cost});
if (nod2 < nod1)
vecini[nod1].back().cost *= -1;
else
vecini[nod2].back().cost *= -1;
}
bfs(x);
fout << distante[y];
return 0;
}