Pagini recente » Cod sursa (job #90618) | Cod sursa (job #1980841) | Cod sursa (job #164795) | Cod sursa (job #767883) | Cod sursa (job #360749)
Cod sursa(job #360749)
#include<stdio.h>
#include<vector>
using namespace std;
vector <int> a[30002];
vector <int> v[30002];
int d[30002],i,num,j,in=1,sf,u,y1,n,m,x,y,c[30002],xx,yy;;
char sat[50];
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%hd%hd\n",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{
gets(sat);
xx=0;
yy=0;
num=0;
for(j=0;sat[j]!=' ';j++)
xx=xx*10+sat[j]-'0';
for(j++;sat[j]!=' ';j++)
yy=yy*10+sat[j]-'0';
for(j++;sat[j];j++)
num=num*10+sat[j]-'0';
a[xx].push_back(yy);
a[yy].push_back(xx);
v[xx].push_back(num);
v[yy].push_back(num);
c[++sf]=x;
}
while(d[y]==0)
{
x=c[++in];
u=a[x].size();
for(i=0;i<u;i++)
{
y1=a[x][i];
if(d[y1]==0)
{
num=v[x][i];
if(x<y1)
d[y1]=d[x]+num;
else
d[y1]=d[x]-num;
c[++sf]=y1;
}
}
}
printf("%d\n",d[y]);
return 0;
}