Cod sursa(job #2553636)

Utilizator marius004scarlat marius marius004 Data 22 februarie 2020 10:43:22
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <queue>
#include <vector>

std::ifstream f("sate.in");
std::ofstream g("sate.out");

const int NMAX = 30'005;
int n,m,nodStart,nodEnd,cost,x,y,d[NMAX];
bool vis[NMAX];
std::queue<int>Q;
std::vector<std::pair<int,int>>L[NMAX];

void bfs(int nod){
    
    Q.push(nod);
    vis[nod] = true;
    
    while(!Q.empty()){
        
        int nod = Q.front();
        Q.pop();
        
        for(int i = 0;i < L[nod].size();++i){
            
            int vecin = L[nod][i].first;
            int cost = L[nod][i].second;
            
            if(!vis[vecin]){
                vis[vecin] = true;
                d[vecin] = d[nod] + cost;
                Q.push(vecin);
            }
        }
    }
}

int main(){
    
    f >> n >> m >> nodStart >> nodEnd;
    
    for(int i = 1;i <= m;++i){
        
        f >> x >> y >> cost;
        
        L[x].push_back({y,cost});
        L[y].push_back({x,-cost});
    }
    
   bfs(nodStart);
    
    g << d[nodEnd];
    
    return 0;
}