Cod sursa(job #3319876)

Utilizator DariuzzHackerPrime Dariuzz Data 3 noiembrie 2025 16:43:27
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
#include<fstream>
#include<vector>
#include<queue>
#include<utility>
#include<algorithm>
#include<unordered_set>
using namespace std ; 
ifstream cin("sate.in");
ofstream cout("sate.out");
void BFS(int start , vector<vector<pair<int,int> > > &adj , vector<int> &dist ){
       
     queue<int> q ; 
      unordered_set<int> seen ; 
         q.push(start) ; 
           seen.insert(start);
             while(!q.empty()){
                  int fr = q.front() ; 
                   q.pop() ;
               //cout<<fr<< ' ';
                 for(int j = 0 ; j < adj[fr].size() ; j ++ ){
                       pair<int,int> nr = adj[fr][j] ; 
                          if(dist[nr.first]  == 0 ){
                                if(fr < nr.first )
                                dist[nr.first] = dist[fr] + nr.second ; 
                                   else
                                   dist[nr.first] = dist[fr]  - nr.second ; 

                          }
                         if(!seen.count(nr.first)){
                              q.push(nr.first);
                               seen.insert(nr.first);
                         }
                 }
             }
}
int main(){

     int n , m , c , x , y , start , end ; 
       cin>>n>>m>>start>>end;
           vector<vector<pair<int,int> > > adj(n+1) ; 
      for(int i = 1 ; i <= m ; i ++ ){
          cin>>x>>y>>c;
            adj[x].push_back(make_pair(y,c));
            adj[y].push_back(make_pair(x,c));
      }
        vector <int> dist ( n+1 , 0  ) ;
        dist[start] = 0 ; 
        BFS(start,adj,dist);
      cout<<dist[end]; 





    return 0 ; 
}