Pagini recente » Cod sursa (job #2967393) | Cod sursa (job #2304603) | Cod sursa (job #1538677) | Cod sursa (job #543297) | Cod sursa (job #1592558)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int A[3][200050],V[30000],n,m,nr,x,y,D[30000],M[30000];
void adauga(int a,int b,int c){
++nr;
A[0][nr]=b;
A[1][nr]=V[a];
A[2][nr]=c;
V[a]=nr;
}
void bfs(){
int Q[10000];
int inc=1,sf=1;
Q[inc]=x;
M[x]=1;
while(inc<=sf){
int nod=Q[inc];
int i=V[nod];
while(i){
if(!M[A[0][i]]){
M[A[0][i]]=1;
D[A[0][i]]=D[nod]+A[2][i];
Q[++sf]=A[0][i];
}
i=A[1][i];
}
inc++;
}
}
int main()
{
f>>n>>m>>x>>y;
for(int i=0,a,b,c;i<m;i++){
f>>a>>b>>c;
if(a>b){
adauga(a,b,-c);
adauga(b,a,c);
}else{
adauga(a,b,c);
adauga(b,a,-c);
}
}
bfs();
g<<D[y];
return 0;
}