Cod sursa(job #1519356)

Utilizator superstar1998Moldoveanu Vlad superstar1998 Data 7 noiembrie 2015 11:25:59
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#define MAX_N 30001
#define MAX_M 100025
using namespace std;
struct lista
{
    int nod,c;
    lista* urm;
}*G[MAX_N];
int n,m,x,y,st[MAX_M],d[MAX_N],T[MAX_N];
bool use[MAX_N];
void BF(int x, int y)
{
    bool ok=false;
    use[x]=true;
    int q,u;
    q=u=1;
    st[1]=x;
    while(q<=u)
    {
        for(lista* p=G[st[q]];p;p=p->urm)
            if(!use[p->nod])
            {
                use[p->nod]=true;
                if(p->nod>st[q])
                    d[p->nod]=d[st[q]]+p->c;
                else
                    d[p->nod]=d[st[q]]-p->c;
                st[++u]=p->nod;
                if(p->nod==y){ok=true;break;}
            }
        q++;
        if(ok)break;
    }
}
void adauga_muchie(lista*&p,int nod,int c)
{
    lista* aux=new lista;
    aux->nod=nod;
    aux->c=c;
    aux->urm=p;
    p=aux;
}
void citeste()
{
    ifstream f("sate.in");
    f>>n>>m>>x>>y;
    int a,b,c;
    for(int i=1;i<=m;i++)
    {
        f>>a>>b>>c;
        adauga_muchie(G[a],b,c);
        adauga_muchie(G[b],a,c);
    }
    f.close();
}
int main()
{
    citeste();
    BF(x,y);
    ofstream g("sate.out");
    g<<d[y];
    g.close();
    return 0;
}