Cod sursa(job #1204845)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 4 iulie 2014 11:30:26
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");

vector<int> v[30009];
vector<int> dist[30009];
queue<int> coada;

int viz[30009],d[30009],start,finish,n,m;

void bfs(int start)
{

    coada.push(start);
    viz[start] = 1;
    int i,k;
    while(!coada.empty()){
        k = coada.front();
        coada.pop();
        for(i = 0 ; i < v[k].size() ; i++){
            if(!viz[v[k][i]]){
                if(k > v[k][i])
                    d[v[k][i]] = d[k] - dist[k][i];
                else
                    d[v[k][i]] = d[k] + dist[k][i];
            if(d[finish])
                return;
            coada.push(v[k][i]);
            }
        }
    }
}

int main()
{

    int i,x1,y1,c,x,y;
    in>>n>>m>>x1>>y1;
    start = min(x1,y1);
    finish = max(x1,y1);
    for(i = 1 ; i <= m ; i++)
    {
        in>>x>>y>>c;
        v[x].push_back(y);
        dist[x].push_back(c);
        v[y].push_back(x);
        dist[y].push_back(c);
    }
    bfs(start);
    out<<d[finish];
    return 0;
}