Pagini recente » Cod sursa (job #361022) | Cod sursa (job #2941964) | Cod sursa (job #399808) | Cod sursa (job #1635026) | Cod sursa (job #632688)
Cod sursa(job #632688)
#include<cstdio>
#include<algorithm>
#include<vector>
#define y first
#define c second
#define NMAX 30001
using namespace std;
vector< pair<int, int> > G[NMAX];
int f, stop;
bool Viz[NMAX];
void DFS(int x, int dist)
{
Viz[x] = 1;
if(x == f)
{
printf("%d\n", dist);
stop = 1;
return;
}
for(int i = 0; i < G[x].size() && !stop; ++i)
{
int y = G[x][i].y;
if(Viz[y])
continue;
int c = G[x][i].c;
if(y > x)
DFS(y, dist + c);
else
DFS(y, dist - c);
}
}
int main()
{
int n, m, s;
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
scanf("%d%d%d%d", &n, &m, &s, &f);
while(m--)
{
int x, y, c;
scanf("%d%d%d", &x, &y, &c);
G[x].push_back(make_pair(y, c));
G[y].push_back(make_pair(x, c));
}
if(s > f)
{
s = s ^ f;
f = s ^ f;
s = s ^ f;
}
DFS(s, 0);
return 0;
}