Cod sursa(job #1921266)

Utilizator raluuoanaaLenghel raluuoanaa Data 10 martie 2017 11:57:16
Problema Ubuntzei Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <fstream>

using namespace std;
ifstream fin("ubuntzei.in");
ofstream fout("ubuntzei.out");

struct lista
{
    int x,cost;
    lista* urm;
};

lista* v[2001],*p;

int n,m,k,a,b,c,i,dist[2001],drum[2001],fost[2001],mini,poz,ok,pri[2001];

int inserare(lista*& start,int k,int cost)
{
    lista* nou;
    nou=new lista;
    nou->x=k;
    nou->cost=cost;
    nou->urm=start;
    start=nou;
}



int main()
{
    fin>>n>>m;
    fin>>k;
    for(i=1;i<=k;i++) fin>>pri[i];
    for(i=1;i<=m;i++)
    {
        fin>>a>>b>>c;
        inserare(v[a],b,c);
        inserare(v[b],a,c);
    }

    for(i=1;i<=n;i++)
    {
        //fost[i]=0;
        dist[i]=99999999;
        //drum[i]=0;
    }
    dist[1]=0;
    ok=1;
    while(ok)
    {
        mini=999999999;
        poz=0;
        for(i=1;i<=n;i++)
            if(fost[i]==0&&dist[i]<mini)
        {
            mini=dist[i];
            poz=i;
        }
        if(poz==0) ok=0;
        else
        {
            p=v[poz];
            fost[poz]=1;
            while(p!=NULL)
            {
                if(fost[p->x]==0)
                {
                    if(dist[p->x]>dist[poz]+p->cost)
                        {
                            dist[p->x]=dist[poz]+p->cost;
                            drum[p->x]=poz;
                        }
                }
                p=p->urm;
            }
        }
    }

    fout<<dist[n];

    return 0;
}