Pagini recente » Cod sursa (job #2000323) | Cod sursa (job #2314049) | Cod sursa (job #1804456) | Cod sursa (job #2817829) | Cod sursa (job #73980)
Cod sursa(job #73980)
#include <stdio.h>
#include <vector>
using namespace std;
#define MAX_N 30100
#define pb push_back
int N, M, X, Y, Q[MAX_N], D[MAX_N], viz[MAX_N];
vector<int> G[MAX_N], R[MAX_N];
void solve(void)
{
int inc, sf, i, y, x;
Q[inc = sf = 0] = X, viz[X] = 1;
while(inc <= sf)
{
x = Q[inc++];
for(i = 0; i < G[x].size(); i++)
{
y = G[x][i];
if(!viz[y])
viz[y] = 1, Q[++sf] = y, D[y] = D[x] + R[x][i]*(x<y?1:-1);
}
}
}
void read_data(void)
{
int i, a, b, c;
scanf("%d %d %d %d\n", &N, &M, &X, &Y);
for(i = 1; i <= M; i++)
{
scanf("%d %d %d\n", &a, &b, &c);
G[a].pb(b), G[b].pb(a), R[a].pb(c), R[b].pb(c);
}
}
void write_data(void)
{
printf("%d\n", D[Y]);
}
int main(void)
{
freopen("sate.in", "rt", stdin);
freopen("sate.out", "wt", stdout);
read_data();
solve();
write_data();
return 0;
}