Pagini recente » Cod sursa (job #403460) | Profil ΩMΣGΔ | Cod sursa (job #168081) | Cod sursa (job #2016885) | Cod sursa (job #1253087)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int nod,cost;
};
ifstream fin("sate.in");
ofstream fout("sate.out");
const int NMAX=30005;
int n,m,X,Y,c[NMAX];
vector<cell>v[NMAX];
bitset<NMAX>viz;
inline void DFS(int x)
{
viz[x]=1;
for (vector<cell>::iterator it=v[x].begin();it!=v[x].end();it++)
if (!viz[(*it).nod])
{
if ((x>(*it).nod && X>(*it).nod && x<X) || (x<(*it).nod && X<(*it).nod && x>X))
c[(*it).nod]=c[x]+(*it).cost;
else c[(*it).nod]=abs(c[x]-(*it).cost);
DFS((*it).nod);
}
}
int main()
{
int i,x;
cell k;
fin>>n>>m>>X>>Y;
for (i=1;i<=m;i++)
{
fin>>x>>k.nod>>k.cost;
v[x].push_back(k);
swap(x,k.nod);
v[x].push_back(k);
}
viz[X]=1;
for (vector<cell>::iterator it=v[X].begin();it!=v[X].end();it++)
{
c[(*it).nod]=(*it).cost;
DFS((*it).nod);
}
fout<<c[Y]<<" ";
return 0;
}