Cod sursa(job #1070969)

Utilizator horatiu11Ilie Ovidiu Horatiu horatiu11 Data 2 ianuarie 2014 13:36:31
Problema Ubuntzei Scor 20
Compilator cpp Status done
Runda 2_ian_2014 Marime 1.17 kb
//horatiu11
# include <cstdio>
# include <vector>
# include <queue>
# include <cstring>
# define nmax 2001
# define inf 2000000000
# define kmax 17
using namespace std;
int c[kmax],n,m,k,x,y,z,D[nmax];
vector <pair <int,int> >G[nmax];
queue <int>q;
void bellman_ford(int x)
{
    int i;
    q.push(x);D[x]=0;
    while(!q.empty())
    {
        x=q.front();q.pop();
        for(i=0;i<G[x].size();++i)
            if(D[G[x][i].first] > D[x]+G[x][i].second)
            {
                D[G[x][i].first] = D[x]+G[x][i].second;
                q.push(G[x][i].first);
            }
    }
}
int main()
{
    int i;
    freopen("ubuntzei.in","r",stdin);
    freopen("ubuntzei.out","w",stdout);
    scanf("%d%d%d",&n,&m,&k);
    for(i=1;i<=k;++i)
        scanf("%d",&c[i]);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d%d",&x,&y,&z);
        G[x].push_back(make_pair(y,z));
        G[y].push_back(make_pair(x,z));
    }
    c[++k]=n;
    k=1;
    //for(i=1;i<=k;++i)
    //{
    //    memset(D[k],inf,sizeof(D[k]));
    //bellman_ford(c[i]);
    //}
    for(i=1;i<=n;++i)
        D[i]=inf;
    bellman_ford(1);
    printf("%d",D[n]);
    return 0;
}