Cod sursa(job #2189793)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 29 martie 2018 00:23:17
Problema Sate Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
//ifstream in("sate.in");
//ofstream out("sate.out");

int n,m,i,j,x,y,a,b,c;
vector <int> v[30010];
vector <int> d[30010];
bool viz[30010];
int dis[30010];


int main()
{
    ifstream cin("sate.in");
    ofstream cout("sate.out");
    cin>>n>>m>>x>>y;
    for(i=1;i<=m;i++)
    {
        cin>>a>>b>>c;
        v[a].push_back(b);
        v[b].push_back(a);
        d[a].push_back(c);
        d[b].push_back(c);
    }
    queue <int> q;
    viz[1]=1;
    dis[1]=0;
    q.push(1);
    while(!q.empty())
    {
        int c=q.front();
        q.pop();
        viz[c]=1;
        for(int i=0;i<v[c].size();i++)
        {
            if(!viz[v[c][i]])
            {
                viz[v[c][i]]=1;
                if(v[c][i]>c) dis[v[c][i]]=dis[c]+d[c][i];
                if(v[c][i]<c) dis[v[c][i]]=dis[c]-d[c][i];
                q.push(v[c][i]);
            }
        }

    }
    cout<<dis[y]-dis[x];

    return 0;
}