Cod sursa(job #1304494)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 28 decembrie 2014 22:52:10
Problema Sate Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <cmath>
#define DIM 30002
using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");
long long n,m,x,y,viz[DIM],C[DIM],D;
vector <long long> v[DIM],d[DIM];
void BFS(int x){
    int p,u;
    viz[x]=0;
    C[1]=x;p=u=1;
    while(p<=u && viz[y]==-1){
        x=C[p++];
        for(int i=0;i<v[x].size();i++){
            if(viz[v[x][i]]==-1){
                if(x<v[x][i])
                    viz[v[x][i]]=viz[x]+d[x][i];
                else
                    viz[v[x][i]]=abs(viz[x]-d[x][i]);
                C[++u]=v[x][i];
            }
        }
    }
}
int main(){
    fin>>n>>m>>x>>y;
    while(m--){
        int g,f;
        fin>>g>>f>>D;
        v[g].push_back(f);
        v[f].push_back(g);
        d[g].push_back(D);
        d[f].push_back(D);
    }
    memset(viz,-1,sizeof(viz));
    BFS(x);
    fout<<viz[y];
    fin.close();fout.close();
    return 0;
}