Cod sursa(job #981441)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 7 august 2013 09:36:35
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <list>
#include <vector>
#include <queue>
 
#define MAX 300002
#define fin "sate.in"
#define fout "sate.out"
 
using namespace std;
 
ifstream in(fin);
ofstream out(fout);
 
typedef pair<int,int> node;
 
int N,M,S,D,x,y,cost;
vector<node> edges[MAX];
vector<int> dist( MAX, 0 );
queue<int> q;
vector<bool> visited(MAX,0);
 
int main(){
 
    in >> N >> M >> S >> D;
 
    for( int i = 1; i <= M; i++ ){
        in >> x >> y >> cost;
        edges[x].push_back( node(y, cost));
            edges[y].push_back( node(x, -cost));
    }
     
    visited[S] = 1;
    q.push(S);
    while( !q.empty() && !visited[D] ){
     
         int u = q.front();
         q.pop();
          
         for( unsigned i = 0 ; i < edges[u].size(); i++ ){
        if( visited[edges[u][i].first] == 0 ){
          visited[edges[u][i].first] = 1;
          dist[edges[u][i].first] = dist[u] + edges[u][i].second;
          q.push(edges[u][i].first);
        }
        }
         
    }
     
    out<< dist[D];

 
    return 0;
}