Cod sursa(job #3201995)

Utilizator XIIs12sPeteleu Denis Andrei XIIs12s Data 10 februarie 2024 12:09:08
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,a,b,c; int val[30001];
int t[3][2*100025],start[2*100025],viz[30001];
void bfs(int x1)
{
    int st,dr;
    int c1[30001];
    st=dr=1;
    c1[st]=x1;
    while(st<=dr)
    {
        int k=c1[st];
        int man=start[k];
        while(man)
        {
            if(viz[t[0][man]]==0)
            {

                if(t[0][man]>c1[st])
                    val[t[0][man]]=t[2][man]+val[c1[st]];
                else
                    val[t[0][man]]=val[c1[st]]-t[2][man];
                dr++;
                c1[dr]=t[0][man];
                viz[t[0][man]];
            }
            man=t[1][man];
        }

        st++;
    }
}
int main()
{
   f>>n>>m>>x>>y;
   int k=0;
   for(int i=1;i<=m;i++)
   {
       f>>a>>b>>c;
       k++;
       t[0][k]=b;
       t[1][k]=start[a];
       t[2][k]=c;
       start[a]=k;
        k++;
       t[0][k]=a;
       t[1][k]=start[b];
       t[2][k]=c;
       start[b]=k;
   }
   bfs(x);
    g<<val[y];
    return 0;
}