Pagini recente » Cod sursa (job #2401825) | Cod sursa (job #1059643) | Cod sursa (job #2332537) | Cod sursa (job #1470079) | Cod sursa (job #532953)
Cod sursa(job #532953)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
vector<pair<int,int> > v[ 30010 ];
queue<int>q;
int d[ 30010 ],i,j,k,l,m,n,x,y,p;
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++;
q.push(x);
int nod,X,N;
while(p)
{nod = q.front();
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++;
}
}
p--;
q.pop();
}
}
void afisare(){
freopen("sate.out","w",stdout);
printf("%d",d[y]);
}
int main(){
citire();
bfs();
afisare();
return 0;}