Cod sursa(job #2554086)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 22 februarie 2020 16:19:40
Problema Sate Scor 80
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <vector>
#include <bitset>
#define f in
#define g out
#define sat first
#define dist second

using namespace std;
ifstream in ( "sate.in" );
ofstream out( "sate.out" );
vector< pair <int, int> > L[30010];
int n, m, i, j, start, finish, x, y, cost, p, u, vecin, nod;
bitset<30030>fr;
int v[30009], d[30009];

int main() {
    f>>n>>m>>start>>finish;
    for ( i=1; i <= m; ++i ){
        f>>x>>y>>cost;
        L[x].push_back({y, cost});
        L[y].push_back({x, -cost});
    }
    p = u = 1;
    v[1] = start;
    while ( p <= u ){
        nod = v[p];
        for ( i=0; i < L[nod].size(); ++i ){
            vecin = L[nod][i].sat;
            cost = L[nod][i].dist;
            if ( !fr[vecin] ){
                fr[vecin] = 1;
                d[vecin] = d[nod]+cost;
                v[++u] = vecin;
                if ( vecin == finish ){
                    g<<d[vecin];
                    return 0;
                }
            }
        }
        ++p;
    }
    return 0;
}