Pagini recente » Cod sursa (job #1973002) | Cod sursa (job #968237) | Cod sursa (job #846332) | Cod sursa (job #2376942) | Cod sursa (job #3202491)
#include <iostream>
#include <fstream>
#define nrm 100025
#define nrn 30001
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int t[3][2*nrm], viz[nrn], x, y, n, m, m1, m2, i, nr,k, start[nrn], c[nrn], km[nrn];
long long s;
void bf(int inc, int sf)
{
int pi=1, ps=1, k, val;
c[pi]=inc; viz[inc]=1;
while (ps<=pi && k!=sf)
{
k=c[ps];
val=start[k];
while (val)
{
if (!viz[t[0][val]])
{
c[++pi]=t[0][val];
viz[t[0][val]]=1;
if (k<t[0][val])
km[t[0][val]]=km[k]+t[2][val];
else
km[t[0][val]]=km[k]-t[2][val];
}
val=t[1][val];
}
ps++;
}
}
int main()
{
f>>n>>m>>m1>>m2;
for (i=1;i<=m;i++)
{
f>>x>>y>>nr;
///formez listele de adiacenta
k++;
t[0][k]=y; t[1][k]=start[x]; start[x]=k;
t[2][k]=nr;///salvez nr de km
k++;
t[0][k]=x; t[1][k]=start[y]; start[y]=k;
t[2][k]=nr;///salvez nr de km
}
bf(m1,m2);
g<<km[m2];
return 0;
}