Pagini recente » Cod sursa (job #1910892) | Cod sursa (job #3199996) | Cod sursa (job #1798171) | Cod sursa (job #826227) | Cod sursa (job #414128)
Cod sursa(job #414128)
#include<fstream>
#define Max 300025
using namespace std;
ofstream fout("sate.out");
int n,m,x,y,k,t[3][Max],start[Max],pus[Max],b[Max];
long long drum[Max];
void read()
{
ifstream fin("sate.in");
int i,o1,o2,d;
fin>>n>>m>>x>>y;
for(i = 1; i <= m; i++)
{
fin>>o1>>o2>>d;
k++;
t[0][k] = o2;
t[1][k] = start[o1];
start[o1] = k;
t[2][k] = d;
k++;
t[0][k] = o1;
t[1][k] = start[o2];
start[o2] = k;
t[2][k] = -d;
}
fin.close();
}
void bf(int x)
{
int nod,st,dr;
st = 1;
dr = 1;
pus[x] = 1;
b[st] = x;
while(st <= dr || pus[y] == 0)
{
nod = start[b[st]];
while(nod != 0)
{
if(!pus[t[0][nod]])
{
dr++;
b[dr] = t[0][nod];
pus[b[dr]] = 1;
drum[dr] = drum[st]+t[2][nod];
}
nod = t[1][nod];
}
st++;
}
fout<<drum[dr]<<"\n";
}
int main()
{
//int i;
read();
bf(x);
fout.close();
return 0;
}