Pagini recente » Cod sursa (job #1790600) | Cod sursa (job #2687539) | Cod sursa (job #1579971) | Cod sursa (job #2911705) | Cod sursa (job #1549881)
#include <fstream>
#include <vector>
#include <queue>
#define L 350
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector<int> vecini[L];
queue<int> q;
int a[L][L];
int o,p,d,x,y,n,m;
bool vizitat[L];
int tata[L];
int main()
{
f >> n >> m >> x >> y;
for(int i = 1; i <= m; i++){
f >> o >> p >> d;
a[o][p] = d;
a[p][o] = d;
vecini[p].push_back(o);
vecini[o].push_back(p);
}
// g << 1.0*(sizeof(a) + sizeof(vecini) + sizeof(q) + sizeof(tata) + sizeof(vizitat))/1024/1024;
/**BFS din x*/
q.push(x);
vizitat[x] = 1;
tata[x] = -1;
int ok = 0;
while(!q.empty() && ok == 0){
int curent = q.front();
for(int i = 0; i < vecini[curent].size(); i++){
if(vizitat[vecini[curent][i]] == 0){
vizitat[vecini[curent][i]] = 1;
tata[vecini[curent][i]] = curent;
if(vecini[curent][i] == y){
ok = 1;
break;
}
q.push(vecini[curent][i]);
}
}
q.pop();
}
int j = y,s = 0;
while(tata[j] > 0){
if(j > tata[j]){
s += a[j][tata[j]];
}else{
s -= a[j][tata[j]];
}
j = tata[j];
}
g << s <<"\n";
return 0;
}