Pagini recente » Cod sursa (job #3129676) | Cod sursa (job #1190954) | Cod sursa (job #1375915) | Cod sursa (job #181067) | Cod sursa (job #523249)
Cod sursa(job #523249)
#include<fstream>
#include<queue>
#include<bitset>
#include<algorithm>
using namespace std;
void read();
void BF();
void write();
bitset<35000> s;
queue<int > Q;
vector< vector<pair<int, int> > > a;
int n, m, x, y;
int d[35000];
int main()
{
read();
BF();
write();
return 0;
}
void read()
{
ifstream fin("sate.in");
fin >> n >> m >> x >> y;
a.resize(n+1);
if( x > y)
swap(x, y);
int a1, b, c;
for(int i = 1; i <= m; i++)
{
fin >> a1 >> b >> c;
a[a1].push_back( make_pair(b, c) );
a[b].push_back( make_pair(a1, -c) );
}
fin.close();
}
void BF()
{
s[x] = 1;
Q.push(x);
d[x] = 0;
while( !Q.empty() )
{
int k = Q.front();
Q.pop();
for(int i = 0; i < (int)a[k].size(); ++i)
{
int j = a[k][i].first;
if( !s[j] )
{
Q.push(j);
d[j] = a[k][i].second + d[k];
s[j] = 1;
}
}
}
}
void write()
{
ofstream fout("sate.out");
fout << d[y] ;
fout.close();
}