Cod sursa(job #2164165)

Utilizator CozehNita Horia Teodor Cozeh Data 12 martie 2018 21:50:39
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <queue>
#include <vector>
#define mp make_pair
using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");

vector <pair<int,int> > vecini[3*(int)1e4+10];
int q[(int)1e5+10];
int vizitat[(int)1e5];
int dist;
int x,y;

void bfs(){
    int start = x,i;
    int st=1,dr=1;
    q[st] = x;
    dist = 0;
    vizitat[start] = 1;
    while(dr-st+1>0){
        int nod = q[st];
        st++;
        for(i = 0; i < vecini[nod].size(); i++){
            if(!vizitat[vecini[nod][i].first]){
                dist += vecini[nod][i].second;
                vizitat[vecini[nod][i].first] = 1;
                if(vecini[nod][i].first == y){
                    st = dr+2;
                    break;
                }
                dr++;
                q[dr] = vecini[nod][i].first;
            }
        }
    }
    fout<<dist;
}

int main(){

    int n,m,nr1,nr2;
    fin>>n>>m>>x>>y;
    int i,j;
    for(i = 1; i <= m; i++){
        fin>>nr1>>nr2>>j;
        vecini[nr1].push_back(mp(nr2,j));
        vecini[nr2].push_back(mp(nr1,j*(-1)));
    }

    bfs();

}