Pagini recente » Cod sursa (job #2308522) | Cod sursa (job #869576) | Cod sursa (job #1146587) | Cod sursa (job #2196400) | Cod sursa (job #504783)
Cod sursa(job #504783)
#include<vector>
#include<cstdio>
#include <algorithm>
using namespace std;
const int N = 30001;
const char in[]="sate.in";
const char out[]="sate.out";
vector< pair<int, int> >G[N];
long n, m, d[N], X, Y, coada[N];
void bfs(int x)
{
for(unsigned long i = 0 ; i < G[x].size() ; ++i)
if(!d[G[x][i].first])
{
coada[++coada[0]] = G[x][i].first;
if(G[x][i].first < x)
d[G[x][i].first] = d[x] - G[x][i].second;
else d[G[x][i].first] = d[x] + G[x][i].second;
}
}
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d%d%d", &n, &m, &X, &Y);
for(long i = 1 ; i <= m ; ++i)
{
int x, y, dist;
scanf("%ld%ld%ld", &x, &y, &dist);
G[x].push_back(make_pair(y, dist));
G[y].push_back(make_pair(x, dist));
}
coada[++coada[0]] = X;
for( long i = 1 ; i <= coada[0] && !d[Y]; ++i)
bfs(coada[i]);
printf("%ld\n",d[Y]);
return 0;
}