Pagini recente » Cod sursa (job #1935247) | Cod sursa (job #1510812) | Cod sursa (job #2130708) | Cod sursa (job #1186016) | Cod sursa (job #532955)
Cod sursa(job #532955)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
vector<pair<int,int> > v[ 30010 ];
int d[ 30010 ],q[30010],i,j,k,l,m,n,x,y,p,u;
void citire(){
freopen("sate.in","r",stdin);
scanf("%d %d %d %d",&n,&m,&x,&y);
int a,b,c;
for(i = 1 ; i<= m ;i++)
{scanf("%d %d %d",&a,&b,&c);
v[a].push_back(make_pair(b,c));
v[b].push_back(make_pair(a,c));
}
}
void bfs(){
p++;
u++;
//q.push(x);
q[p]=x;
int nod,X,N;
while(p<=u)
{//nod = q.front();
nod = q[p];
N = v[nod].size();
for(i = 0;i<N;i++)
{X = v[nod][i].first;
if(X != x && d[X] == 0)
{if(X > nod)
d[X] = d[nod] + v[nod][i].second;
else
d[X] = d[nod] - v[nod][i].second;
//q.push(X);
//p++;
u++;
q[u]=X;
}
}
//p--;
//q.pop();
p++;
}
}
void afisare(){
freopen("sate.out","w",stdout);
printf("%d",d[y]);
}
int main(){
citire();
bfs();
afisare();
return 0;}