Cod sursa(job #1411831)

Utilizator AndyCatrunaCatruna Andy AndyCatruna Data 31 martie 2015 23:09:42
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#define dim 30005
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,i,j,m,d,x,y,f[dim],a,b,viz[dim];
vector< pair<int,int> > v[dim];
queue <int> q;
void bfs(int s){
    q.push(s);
    viz[s]=1;
    while(!q.empty()){
        s=q.front();
        for(i=0;i<v[s].size();i++){
            if(viz[v[s][i].first]==0){
                if(v[s][i].first<s){
                    f[v[s][i].first]=f[s]-v[s][i].second;
                }
                else{
                    f[v[s][i].first]=f[s]+v[s][i].second;
                }
                viz[v[s][i].first]=1;
                q.push(v[s][i].first);
            }
        }
        q.pop();
    }

}
int main(){
    fin>>n>>m>>x>>y;
    for(i=1;i<=m;i++){
        fin>>a>>b>>d;
        v[a].push_back(make_pair(b,d));
        v[b].push_back(make_pair(a,d));

    }
    bfs(x);
    fout<<f[y]<<"\n";

    return 0;
}