Pagini recente » Cod sursa (job #2859578) | Cod sursa (job #78797) | Cod sursa (job #3234450) | Cod sursa (job #2466286) | Cod sursa (job #641424)
Cod sursa(job #641424)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
const int N=30001;
struct stuff{
int y,d;};
vector <stuff> a[N];
queue <stuff> v;
stuff h;
int lmin,n,m;
void lee(int x)
{
int u,d,poz[N],g;
for(int i=1;i<=n;i++)
poz[i]=-1;
while(!v.empty())
{
h=v.front();
v.pop();
u=h.y;
d=h.d;
for(int i=0;i<a[u].size();i++)
{
g=a[u][i].y;
if(poz[g]==-1)
{
poz[g]=0;
h.y=g;
if(u<=g)
h.d=d+a[u][i].d;
else
h.d=d-a[u][i].d;
if(g!=x)
v.push(h);
else
if(h.d<lmin)
lmin=h.d;
}
}
}
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
int x,y,k1,k2,d,i;
scanf("%d%d%d%d",&n,&m,&x,&y);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&k1,&k2,&d);
h.y=k2;
h.d=d;
a[k1].push_back(h);
h.y=k1;
a[k2].push_back(h);
}
h.y=x;
h.d=0;
v.push(h);
lmin=999999;
lee(y);
printf("%d\n",lmin);
return 0;
}