Pagini recente » Cod sursa (job #2103274) | Cod sursa (job #2054380) | Cod sursa (job #2913718) | Cod sursa (job #59843) | Cod sursa (job #2308498)
#include <bits/stdc++.h>
#define F first
#define S second
using namespace std;
int n,m,x,y;
bool V[30010];
vector <pair<int,int> > A[30010];
pair<int,int> p;
ifstream fin("sate.in");
ofstream fout("sate.out");
int BFS(int x, int y){
queue <pair<int,int> > q;
p.F=x;p.S=0;
q.push(p);
int sol=10000000;
while(!q.empty()){
int cn=q.front().F;
if(cn!=y){
for(int i=0;i<A[cn].size();i++){
int s=q.front().S;
p.F=A[cn][i].F;
if(cn>p.F)s-=A[cn][i].S;
else s+=A[cn][i].S;
p.S=s;
if(!V[A[cn][i].F]){
q.push(p);
}else if(A[cn][i].S>p.S){
V[A[cn][i].F]=0;
q.push(p);
}
}
V[cn]=1;
}else sol=min(q.front().S,sol);
if(!q.empty())q.pop();
}
return sol;
}
int main(){
fin>>n>>m>>x>>y;
memset(V,0,n);
for(int i=0;i<m;i++){
int xc,yc,vc;
fin>>xc>>yc>>vc;
p.F=yc;p.S=vc;
A[xc].push_back(p);
p.F=xc;
A[yc].push_back(p);
}
fout<<BFS(x,y);
return 0;
}