Pagini recente » Cod sursa (job #320009) | Cod sursa (job #1100919) | Cod sursa (job #715212) | Cod sursa (job #335923) | Cod sursa (job #1836487)
#include <cstdio>
#include <vector>
#include <algorithm>
#include <bitset>
using namespace std;
vector < pair<int, int> > L[30001];
int d[30001], c[30001];
pair<int, int> aux;
bitset<30001> v;
int x, y, n, m, a, b, dd;
int main()
{
FILE *fin=fopen ("sate.in","r");
FILE *fout=fopen ("sate.out","w");
fscanf (fin,"%d%d%d%d",&n,&m,&x,&y);
if (x > y) {
int ax = x;
x = y;
y = ax;
}
for (int i=1;i<=m;i++){
fscanf (fin,"%d%d%d",&a,&b,&dd);
// aux.first = b; aux.secod = d; L[a].push_back(aux);
L[a].push_back( make_pair(b, dd) );
L[b].push_back(make_pair(a, -dd));
}
int p = 1;
int u = 1;
c[1] = x;
v[x] = 1;
d[x] = 0;
while (p <= u) {
int nod = c[p];
// caut vecinbii nevizitati ai lui nod
for (int i=0;i<L[nod].size(); i++) {
int vecin = L[nod][i].first;
int dist = L[nod][i].second;
if (v[vecin] == 0) {
u++;
c[u] = vecin;
v[vecin] = 1;
d[vecin] = d[nod] + dist;
if (vecin == y) {
fprintf(fout, "%d", d[vecin]);
return 0;
}
}
}
p++;
}
return 0;
}