Pagini recente » Cod sursa (job #84714) | Cod sursa (job #3130918) | Cod sursa (job #621838) | Cod sursa (job #2109530) | Cod sursa (job #3201632)
#include <iostream>
#include <fstream>
using namespace std;
#define N 30001
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, a, b, x, y, val, k;
int t[2][100025], start[N], viz[N], c[N];
void bfs(int plec)
{
int st, dr, man, mini, alege, drmin = 0;
st = dr = 1;
viz[plec] = 1;
c[dr] = plec;
while(st <= dr)
{
man = start[c[st]];
mini = 20000001;
alege = 0;
while( man )
{
if(t[0][man] && !viz[t[0][man]] && t[2][man] < mini)
{
mini = t[2][man];
alege = t[0][man];
}
man = t[1][man];
}
if(alege)
{
c[++dr] = alege;
viz[alege] = 1;
if(alege > c[st])
drmin += mini;
else
drmin -= mini;
}
st++;
}
fout << drmin;
}
int main()
{
fin >> n >> m >> a >> b;
while(fin >> x >> y >> val)
{
k++;
t[0][k] = y;
t[1][k] = start[x];
t[2][k] = val;
start[x] = k;
k++;
t[0][k] = x;
t[1][k] = start[y];
t[2][k] = val;
start[y] = k;
}
bfs(a);
return 0;
}