Pagini recente » Cod sursa (job #2238790) | Cod sursa (job #1176346) | Cod sursa (job #3292687) | Cod sursa (job #362316) | Cod sursa (job #67770)
Cod sursa(job #67770)
#include <stdio.h>
#include <vector>
#define NMAX 30000
#define ps push_back
#define sz size()
using namespace std;
vector<int> a[NMAX+3], d[NMAX+3];
int n, m;
int x, y;
int dist;
short int uz[NMAX+3];
void read()
{
int i;
int j, k, l;
scanf("%d %d %d %d", &n, &m, &x, &y);
for(i = 0; i < m; ++i)
{
scanf("%d %d %d", &j, &k, &l);
a[j].ps(k);
d[j].ps(l);
a[k].ps(j);
d[k].ps(l);
}
}
void df(int nod)
{
if(nod == y)
{
printf("%d\n", dist);
exit(0);
}
int i, aux = a[nod].sz;
for(i = 0; i < aux; ++i)
{
if(uz[ a[nod][i] ])
continue;
uz[ a[nod][i] ] = 1;
if(a[nod][i] < nod)
{
dist -= d[nod][i];
df(a[nod][i]);
dist += d[nod][i];
}
else
{
dist += d[nod][i];
df(a[nod][i]);
dist -= d[nod][i];
}
}
}
int main()
{
freopen("sate.in", "r", stdin);
freopen("sate.out", "w", stdout);
read();
if(x > y)
{
int aux = x;
x = y;
y = aux;
}
uz[x] = 1;
df(x);
return 0;
}