Pagini recente » Cod sursa (job #927919) | Cod sursa (job #1593094) | Cod sursa (job #1753712) | Cod sursa (job #1692161) | Cod sursa (job #1857310)
#include<bits/stdc++.h>
#define dim 1000005
using namespace std;
char buff[dim+5];
int poz=0,n,m,x,y,a,b,d;
int cost[30005],minim=INT_MAX,o1,o2;
inline int min(int a,int b)
{
return a<b?a:b;
}
void citeste(int &numar)
{
numar=0;
while(buff[poz]<'0' || buff[poz]>'9')
{
poz++;
if(poz==dim)
{
poz=0;
fread(buff,1,dim,stdin);
}
}
while(buff[poz]>='0' && buff[poz]<='9')
{
numar=numar*10+buff[poz]-'0';
poz++;
if(poz==dim)
{
poz=0;
fread(buff,1,dim,stdin);
}
}
}
vector<pair<int,int> > v[30005];
vector<pair<int,int> >::iterator it;
deque<int> q;
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
fread(buff,1,dim,stdin);
citeste(n);
citeste(m);
citeste(o1);
citeste(o2);
for(int i=1;i<=m;i++)
{
citeste(a);
citeste(b);
citeste(d);
v[a].push_back(make_pair(b,d));
v[b].push_back(make_pair(a,-d));
minim=min(minim,a);
minim=min(minim,b);
}
cost[minim]=1;
q.push_front(minim);
while(!q.empty())
{
x=q.front();
for(it=v[x].begin();it!=v[x].end();it++)
{
if(!cost[(*it).first])
{
cost[(*it).first]=cost[x]+(*it).second;
q.push_back((*it).first);
}
}
q.pop_front();
}
int dif=cost[o2]-cost[o1];
printf("%d\n",dif);
return 0;
}