Cod sursa(job #1509692)

Utilizator biaiftimeIftime Bianca biaiftime Data 24 octombrie 2015 10:58:35
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct nod
{
    int info;
    int dist;
    nod *urm;
};
nod *a[30001];
int n,m,xi,xf,viz[30001],d[30001];
void Add(nod *&prim,int x,int c)
{
    nod *q=new nod;
    q->info=x;
    q->dist=c;
    q->urm=prim;
    prim=q;
}
void Citire()
{
    fin>>n>>m>>xi>>xf;
    int i,x,y,d;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>d;
        Add(a[x],y,d);
        Add(a[y],x,-d);

    }
}
void BFS(int xi)
{
    nod *p;
    int pr,ul,c[30001],i,v;
    viz[xi]=1;
    c[1]=xi; pr=ul=1;
    while(pr<=ul)
    {
        v=c[pr];
        pr++;
        for(p=a[v];p!=NULL;p=p->urm)
            if(viz[p->info]==0)
        {
            d[p->info]=d[v]+p->dist;
            viz[p->info]=1;
            ul++;
            c[ul]=p->info;
        }
    }
}
int main()
{
    Citire();
    BFS(xi);
    fout<<d[xf]<<" ";
    return 0;
}