Pagini recente » Monitorul de evaluare | Atasamentele paginii Profil deresuroberto | Profil skyel | Shuffle | Cod sursa (job #67553)
Cod sursa(job #67553)
#include <stdio.h>
#include <vector>
using namespace std;
#define NMAX 30010
#define MP make_pair
int N, M, beg, end;
int rez = 0;
vector <pair<int, int> > leg[NMAX];
char viz[NMAX];
inline void SWAP(int &x, int &y)
{
int aux = x;
x = y;
y = aux;
}
void back(int x, int dst)
{
if (x == end) rez = dst;
viz[x] = 1;
vector <pair<int, int> > :: iterator it;
for (it = leg[x].begin(); it != leg[x].end(); ++it)
if (!viz[(*it).first]) {
back((*it).first, dst + (*it).second);
}
}
int main()
{
int i, x, y, c;
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
scanf("%d %d %d %d", &N, &M, &beg, &end);
if (beg > end) SWAP(beg, end);
for (i = 1; i <= M; i++) {
scanf("%d %d %d", &x, &y, &c);
if (x > y) SWAP(x, y);
leg[x].push_back(MP(y, c));
leg[y].push_back(MP(x, -c));
}
back(beg, 0);
printf("%d\n", rez);
fclose(stdin);
fclose(stdout);
return 0;
}