Pagini recente » Cod sursa (job #84249) | Cod sursa (job #1756042) | Cod sursa (job #1016312) | Cod sursa (job #2621649) | Cod sursa (job #1994642)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const long inf=20000005;
long n,m,c,d,i,x,y,z,v[30005];
struct vec
{
vector <long> a,b;
};
vec w[30005];
queue <long> q;
int main()
{
ifstream f("sate.in");
ofstream g("sate.out");
f>>n>>m>>c>>d;
for(i=1; i<=n; i++)
{
w[i].a.push_back(0);
w[i].b.push_back(0);
v[i]=inf;
}
for(i=1; i<=n; i++)
{
f>>x>>y>>z;
w[x].a.push_back(y);
w[x].a[0]++;
w[y].a.push_back(x);
w[y].a[0]++;
w[x].b.push_back(z);
w[y].b.push_back(-z);
}
v[c]=0;
q.push(c);
while(!q.empty())
{
x=q.front();
q.pop();
for(i=1; i<=w[x].a[0]; i++)
{
y=w[x].a[i];
if(v[y]==inf)
{
v[y]=v[x]+w[x].b[i];
q.push(y);
}
}
}
//if(v[d]<0) v[d]*=-1;
g<<v[d]<<'\n';
f.close(); g.close();
return 0;
}