Pagini recente » Cod sursa (job #2838971) | Cod sursa (job #2867359) | football2 | Cod sursa (job #3040009) | Cod sursa (job #1533384)
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<bitset>
#include<queue>
#include<list>
using namespace std;
struct s
{
int d;
int l;
};
list<s> l[30002];
bitset<30002> v;
int calc(int x,int y)
{
queue<s> q;
q.push({x,0});
s z;
list<s>::iterator i;
s a;
v[x]=1;
while(q.size()>0)
{
z=q.front();
q.pop();
for(i=l[z.d].begin();i!=l[z.d].end();++i)
{
a=*i;
if(a.d==y)
{
return z.l+a.l;
}
if(v[a.d]==0)
{
q.push({a.d,z.l+a.l});
v[a.d]=1;
}
}
}
}
int main()
{
ifstream si;
si.open("sate.in");
FILE* so=fopen("sate.out","w");
int n,m,x,y;
si>>n>>m>>x>>y;
--x;
--y;
int i,a,b,c;
for(i=0;i<m;++i)
{
si>>a>>b>>c;
--a;
--b;
l[a].push_back({b,c});
l[b].push_back({a,-c});
}
fprintf(so,"%i\n",calc(x,y));
}