Cod sursa(job #1363654)

Utilizator SerbanECicortas Serban SerbanE Data 27 februarie 2015 09:35:59
Problema Ubuntzei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>

using namespace std;
int a[50][50],n,mini=32000,k,c[16],viz[50],ok;

void df(int v,int s,int nr)
{
    int i,j;
    if(v==n)
    {
        if(nr==k)
            if(s<mini)
                mini=s;
        return;
    }
    else
    {
        viz[v]=1;
        for(i=1;i<=n;i++)
            if(a[i][v]!=0 && viz[i]==0)
            {
                ok=0;
                for(j=1;j<=k;j++)
                    if(i==c[j])
                    {
                        ok=1;
                    }
                if(ok==0)
                    df(i,s+a[i][v],nr);
                else
                    df(i,s+a[i][v],nr+1);
            }
    }
    viz[v]=0;
}
int main()
{
    int m,i,j,nr=0,s,x,y;
    ifstream f("ubuntzei.in");
    ofstream g("ubuntzei.out");
    f>>n>>m;
    f>>k;
    for(i=1;i<=k;i++)
        f>>c[i];
    for(i=1;i<=m;i++)
    {
        f>>x>>y>>j;
        a[x][y]=a[y][x]=j;
    }
    df(1,0,0);
    cout<<mini;
    return 0;
}