Pagini recente » Cod sursa (job #1689030) | Statistici ngoc phuong (ngocphuong912k) | Cod sursa (job #1624155) | Cod sursa (job #1108397) | Cod sursa (job #1477743)
#include <cstdio>
#include <vector>
#include <algorithm>
#define NMAX 30007
using namespace std;
FILE *fin, *fout;
int n, m, x, y, dr = 1, sze, a;
struct muchie
{
int vec;
int cost;
} tmp;
vector<muchie> adj[NMAX];
struct mqueue
{
int nod;
int sum;
int tata;
} q[10*NMAX];
void citire()
{
scanf("%d%d%d%d", &n, &m, &x, &y);
for(int i = 1; i<= m; ++i)
{
scanf("%d%d%d", &a, &tmp.vec, &tmp.cost);
adj[a].push_back(tmp);
swap(a, tmp.vec);
adj[a].push_back(tmp);
}
}
void bfs()
{
q[dr].nod = x;
q[dr].tata = -1;
dr++;
for(int i = 1; i< dr; ++i)
{
if(q[i].nod == y)
{
printf("%d\n", q[i].sum);
break;
}
sze = adj[q[i].nod].size();
for(int j = 0; j< sze; ++j)
{
if(adj[q[i].nod][j].vec == q[i].tata) continue;
q[dr].nod = adj[q[i].nod][j].vec;
q[dr].tata = i;
if(q[dr].nod < q[i].nod) q[dr].sum = q[i].sum - adj[q[i].nod][j].cost;
else q[dr].sum = q[i].sum + adj[q[i].nod][j].cost;
dr++;
}
}
}
int main()
{
fin = freopen("sate.in", "r", stdin);
fout = freopen("sate.out", "w", stdout);
citire();
bfs();
fclose(fin);
fclose(fout);
return 0;
}