Cod sursa(job #2135601)

Utilizator NannyiMaslinca Alecsandru Mihai Nannyi Data 18 februarie 2018 23:07:58
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
#define nmax 30005

struct str{int nod,cost;};

vector<str>Q[nmax];
queue<int>que;

FILE *f=fopen("sate.in","r");
FILE *g=fopen("sate.out","w");

int n,m,x,y,dist[nmax];

void read()
{
    fscanf(f,"%d %d %d %d",&n,&m,&x,&y);
    for (int i=1; i<=m; ++i)
    {
        int r1,r2,r3;
        fscanf(f,"%d %d %d",&r1,&r2,&r3);
        Q[r1].push_back({r2,r3});
        Q[r2].push_back({r1,r3});
    }
}

void solve()
{
    dist[x]=1;
    que.push(x);
    while (!que.empty())
    {
        int nod=que.front();
        que.pop();
        for (auto w:Q[nod])
        {
            int nextnod=w.nod;
            if (!dist[nextnod])
            {
                if (nextnod>nod)
                    dist[nextnod]=dist[nod]+w.cost;
                else
                    dist[nextnod]=dist[nod]-w.cost;
                que.push(nextnod);
            }
        }
    }
    fprintf(g,"%d",dist[y]-1);
}

int main()
{
    read();
    solve();
    return 0;
}