Cod sursa(job #1592558)

Utilizator bogdan2510Ionut Bogdan bogdan2510 Data 7 februarie 2016 19:08:12
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int A[3][200050],V[30000],n,m,nr,x,y,D[30000],M[30000];
void adauga(int a,int b,int c){
    ++nr;
    A[0][nr]=b;
    A[1][nr]=V[a];
    A[2][nr]=c;
    V[a]=nr;
}
void bfs(){
    int Q[10000];
    int inc=1,sf=1;
    Q[inc]=x;
    M[x]=1;
    while(inc<=sf){
        int nod=Q[inc];
        int i=V[nod];
        while(i){
            if(!M[A[0][i]]){
                M[A[0][i]]=1;
                D[A[0][i]]=D[nod]+A[2][i];
                Q[++sf]=A[0][i];
            }
            i=A[1][i];
        }
        inc++;
    }
}
int main()
{
    f>>n>>m>>x>>y;
    for(int i=0,a,b,c;i<m;i++){
        f>>a>>b>>c;
        if(a>b){
            adauga(a,b,-c);
            adauga(b,a,c);
        }else{
            adauga(a,b,c);
            adauga(b,a,-c);
        }
    }
    bfs();
    g<<D[y];
    return 0;
}