Pagini recente » Cod sursa (job #2155034) | Cod sursa (job #2655417) | Cod sursa (job #1508872) | Cod sursa (job #2152204) | Cod sursa (job #1549858)
#include <fstream>
#include <vector>
#include <queue>
#define L 30050
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector<short int> vecini[L];
queue<short int> q;
short int a[2505][2505];
int o,p,d,x,y,n,m;
bool vizitat[L];
short 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;
while(!q.empty()){
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;
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;
}