Pagini recente » Cod sursa (job #1219550) | Cod sursa (job #3141079) | Cod sursa (job #1156800) | Cod sursa (job #2234317) | Cod sursa (job #1759478)
#include <cstdio>
#include <vector>
using namespace std;
const int N = 100005;
vector <int> a[N],b[N];
int q[N];
int d[N];
void adauga(int x,int y)
{
a[x].push_back(y);
}
void adauga2(int x,int y)
{
b[x].push_back(y);
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
int st,dr,x,y,i,n,m,x1,y1,dist,xa;
scanf("%d %d %d %d",&n,&m,&x1,&y1);
for(i=1; i<=m; ++i)
{
scanf("%d %d %d",&x,&y,&dist);
adauga(x,y);
adauga(y,x);
adauga2(x,dist);
adauga2(y,dist);
}
st=0;
dr=-1;
q[st]=x1;
++dr;
while(st<=dr)
{
x=q[st++];
for(i=0; i<a[x].size(); ++i)
{
d[x1]=0;
y=a[x][i];
if(d[y]==0&&y!=x1){
++dr;
if(x<y){
q[dr]=y;
d[y]=d[x]+b[x][i];
}
if(x>y){
q[dr]=y;
d[y]=d[x]-b[x][i];
}
}
}
}
printf("%d",d[y1]);
/*for(i=1;i<=n;++i)
{
if(i==s)
{
printf("0 ");
}
else{
if(d[i]==0)
printf("-1 ");
else
printf("%d ",d[i]);
}
}*/
return 0;
}