Cod sursa(job #1803231)

Utilizator Kln1000Ciobanu Bogdan Kln1000 Data 11 noiembrie 2016 09:51:10
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream f ("sate.in");
ofstream t ("sate.out");

struct edges{
int dest,cost;};

vector <edges> v[30010];
int n,m,cost[30010];
bool vaz[30010];

int bfs(int nod,int target){int curent;
    queue <int> q;
    q.push(nod);
    while (!q.empty()){
    curent=q.front();
    vaz[curent]=true;
    q.pop();
        for (auto i:v[curent])
            if (!vaz[i.dest]){
            q.push(i.dest);
            if (i.dest>curent)
                cost[i.dest]=cost[curent]-i.cost;
            else
                cost[i.dest]=cost[curent]+i.cost;
            }
    }
    return 0;
}

int main()
{
    int x,y,t1,t2,c;
    f>>n>>m>>x>>y;
    for (int i=0;i<m;++i)
        f>>t1>>t2>>c,v[t1].push_back({t2,c}),v[t2].push_back({t1,c});
    if (x>y) swap (x,y);
    bfs(x,y);
    t<<cost[x]-cost[y];
    return 0;
}