Pagini recente » Cod sursa (job #2022314) | Cod sursa (job #2486239) | Cod sursa (job #2003392) | Cod sursa (job #2969112) | Cod sursa (job #1116940)
#include <cstdio>
#include<vector>
using namespace std;
FILE *f=fopen("sate.in","r"), *g=fopen("sate.out","w");
int n,m,x,y;
//struct muchii{int s,d,c;}a[100025];
vector<pair <int,int> >v[30005];
int viz[30005],t[30005],c[30005];
int main(){
int p,u,i,nod,j,s,d,co;
fscanf(f,"%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++){
fscanf(f,"%d%d%d",&s,&d,&co);
v[s].push_back(make_pair(d,co));
v[d].push_back(make_pair(s,co));
}
p=u=1;
c[p]=x;
viz[x]=1;
t[x]=0;
while(p<=u){
nod=c[p];
for( i=0; i<v[nod].size() && p<=u; i++)
if(viz[v[nod][i].first]==0){
j=v[nod][i].first;
u++;
c[u]=j;
//t[j]=nod;
if(j>nod)
viz[j]=viz[nod]+v[nod][i].second;
else
viz[j]=viz[nod]-v[nod][i].second;
if(j==y)
p=u+1;
}
p++;
}
/*p=0;
for(i=y;i>0;i=t[i]){
u=t[i];
for(j=1;j<=m;j++){
if(a[j].s==u && a[j].d==i){
p=p+a[j].c;
j=m+1;
}
else
if(a[j].s==i && a[j].d==u){
p=p-a[j].c;
j=m+1;
}
}
}*/
fprintf(g,"%d\n",viz[y]-1);
return 0;
}