Cod sursa(job #1912186)

Utilizator nicu_serteSerte Nicu nicu_serte Data 7 martie 2017 23:51:24
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int x, y, n, d=0;
vector <pair<int, int> > g[30001];
void citire()
{
    int m, i, j, c;
    fin>>n>>m>>x>>y;
    while(m)
    {
        m--;
        fin>>i>>j>>c;
        g[i].push_back(make_pair(j, c));
        g[j].push_back(make_pair(i, c));
    }
    fin.close();
}
void bfs()
{
    queue <int> q;
    int k;
    vector <pair<int, int> > :: iterator it;
    bool viz[30001]={0};
    q.push(x);
    viz[x]=1;
    while(!q.empty())
    {
        k=q.front();
        q.pop();
        for(it=g[k].begin(); it!=g[k].end(); it++)
            if(!viz[it->first])
            {
                viz[it->first]=1;
                q.push(it->first);
                if(it->first>k)
                    d+=it->second;
                else if(it->first<k)
                    d-=it->second;
                if(it->first==y)
                {
                    fout<<d<<endl;
                    return;
                }
            }
    }
}
int main()
{
    citire();
    bfs();
    return 0;
}