Pagini recente » Cod sursa (job #802640) | Cod sursa (job #2370076) | Cod sursa (job #90871) | Cod sursa (job #2248543) | Cod sursa (job #373987)
Cod sursa(job #373987)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
vector <int> v[30001];
vector<int> di[30001];
int n,m,x,y,p[30001],viz[30001],in,sf,nrr,d[30001];
char s[101];
int main ()
{
int i,a,b,c,poz,nr;
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d\n",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{
a=b=c=0;
gets(s);
nr=strlen(s);
s[nr]=' ';
poz=0;
while(s[poz]!=' ')
{
a=a*10+s[poz]-'0';
poz++;
}
poz++;
//////////////////
while(s[poz]!=' ')
{
b=b*10+s[poz]-'0';
poz++;
}
poz++;
////////////////
while(s[poz]!=' ')
{
c=c*10+s[poz]-'0';
poz++;
}
poz++;
///////////////////////
v[a].push_back(b);
v[b].push_back(a);
di[a].push_back(c);
di[b].push_back(-c);
}
p[1]=x;
in=1;sf=1;
viz[x]=1;
while(sf>=in)
{
nrr=v[p[in]].size();
for(i=0;i<nrr;i++)
{
c=v[p[in]][i];
if(viz[c]==0)
{
p[++sf]=c;
viz[p[sf]]=1;
d[p[sf]]=d[p[in]]+di[p[in]][i];
if(p[sf]==y)
{
printf("%d\n",d[y]);
return 0;
} //if p
} //if viz
}//for
in++;
} //while
printf("%d\n",d[y]);
return 0;
}