Pagini recente » Monitorul de evaluare | Cod sursa (job #2829828) | Monitorul de evaluare | Atasamentele paginii simulare_oji_2023_clasa_9_11_martie | Cod sursa (job #778853)
Cod sursa(job #778853)
#include <cstdio>
#include <cstdio>
#include <vector>
using namespace std;
#define pb push_back
#define mp make_pair
#define to first
#define cost second
vector<pair<int, int> > G[30010];
int N, M, X, Y, A, B, C, used[30010];
void DFS(int start, int dist);
int main()
{
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
int i;
scanf("%i %i %i %i", &N, &M, &X, &Y);
for(i = 1; i <= M; i++)
{
scanf("%i %i %i", &A, &B, &C);
G[A].pb(mp(B, C));
G[B].pb(mp(A, C));
}
DFS(X, 0);
return 0;
}
void DFS(int start, int dist)
{
if(start == Y)
{
printf("%i\n", dist);
return ;
}
used[start] = 1;
vector<pair<int, int> > :: iterator it;
for(it = G[start].begin(); it != G[start].end(); ++ it)
{
if(!used[it -> to])
{
if(it -> to < start)
{
dist -= it -> cost;
DFS(it -> to, dist);
dist += it -> cost;
}else
{
if(it -> to > start)
{
dist += it -> cost;
DFS(it -> to, dist);
dist -= it -> cost;
}
}
}
}
}