Pagini recente » Cod sursa (job #685048) | Cod sursa (job #631633) | Cod sursa (job #664148) | Cod sursa (job #2682471) | Cod sursa (job #482652)
Cod sursa(job #482652)
#include <cstdio>
#include <queue>
#define DN 30005
using namespace std;
struct nod {
int x,cost;
nod *urm;
} *v[DN];
void adaugare(int x, int y, int cost) {
nod *p;
p=new nod;
p->x=y;
p->cost=cost;
p->urm=v[x];
v[x]=p;
}
int n,m,x,y,viz[DN];
void bfs(int sursa) {
viz[sursa]=1;
nod *p;
queue<int> coada;
coada.push(sursa);
for( ;!coada.empty();coada.pop() )
for(p=v[coada.front()];p!=NULL; p=p->urm)
if(!viz[p->x]) {
viz[p->x]=viz[coada.front()]+p->cost;
coada.push(p->x);
}
}
int main()
{
int cost,a,b;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&x,&y);
for(int i=1; i<=m; ++i) {
scanf("%d %d %d",&a,&b,&cost);
adaugare(a,b,cost);
adaugare(b,a,-cost);
}
bfs(x);
printf("%d",viz[y]-1);
return 0;
}