Pagini recente » Cod sursa (job #2477786) | Cod sursa (job #1487008) | Cod sursa (job #3181299) | Cod sursa (job #286328) | Cod sursa (job #1219581)
#include<fstream>
#include<queue>
#include<vector>
#include<bitset>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
struct graf
{
short l;
int r;
};
vector<graf>v[30001];
queue<short>q;
int n,m,st,dr,x,y,c,i;
int d[30001];
bool viz[30001];
void bf(int nod)
{
viz[nod]=1;
q.push(nod);
int e=0;
while(!q.empty() && e==0)
{
int x=q.front();
q.pop();
vector<graf>::iterator it;
for(it=v[x].begin();it!=v[x].end();++it)
{
graf X=*it;
if (viz[X.l]==0)
{
d[X.l]=d[x]+X.r;
if (X.l==dr) {g<<d[X.l];e=1;break;}
q.push(X.l);
}
}
}
}
graf add(int p,int t)
{
graf aux;
aux.l=p;
aux.r=t;
return aux;
}
int main()
{
f>>n>>m>>st>>dr;
for (i=1;i<=m;++i)
{
f>>x>>y>>c;
v[x].push_back(add(y,c));
v[y].push_back(add(x,-c));
}
bf(st);
return 0;
}