Pagini recente » Cod sursa (job #2735352) | Cod sursa (job #1264791) | Cod sursa (job #2329624) | Cod sursa (job #2618853) | Cod sursa (job #1073753)
#include <fstream>
#include <vector>
#include <deque>
#include <cstdlib>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,start,finish;
vector <pair<int,int> > drum[100025];
deque <int> coada;
long long val[30001] = {0};
int main()
{
f >> n >> m >> start >> finish;
for (int i=1; i<=m ; i++)
{
int x,y,c;
f >> x >> y >> c;
drum[x].push_back(make_pair(y,c));
drum[y].push_back(make_pair(x,c));
}
coada.push_back(start);
while (!val[finish])
{
int oras = coada.front();
for (int i=0; i<drum[oras].size();i++ )
{
if (!val[drum[oras][i].first] )
{
coada.push_back(drum[oras][i].first);
if (oras < drum[oras][i].first ) val[drum[oras][i].first] = val[oras] + drum[oras][i].second;
else val[drum[oras][i].first] = val[oras] - drum[oras][i].second;
}
}
coada.pop_front();
}
g << abs(val[finish]) ;
return 0;
}