Cod sursa(job #2864325)

Utilizator MokaDomos Mozes Moka Data 7 martie 2022 19:36:58
Problema Ubuntzei Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <list>
#include <fstream>
struct szomszed
{
    int vegpont;
    int suly;
};
using namespace std;
ifstream cin("ubuntzei.in");
ofstream cout("ubuntzei.out");
int m,n,kdb;
list<szomszed> v[2001];
list<int> kotelezovarosok;
bool k[2001];
int minm=INT_MAX;
bool jart[2001];
void melysegi(int csucs, int osszeg)
{
    k[csucs]=true;
    jart[csucs]=true;
    if (csucs==n)
    {
        bool megoldas=true;
        for (int i:kotelezovarosok)
        {
            if(k[i]!=true)
                megoldas=false;
        }
        if(megoldas)
        {
            if(osszeg<minm)
            {
                minm=osszeg;
            }
        }
    }
    else
    {
        for (szomszed l : v[csucs]){
            if(!jart[l.vegpont]){
                melysegi(l.vegpont,osszeg+l.suly);
            }
        }
        jart[csucs]=false;
        k[csucs]=false;
    }

}
int main()
{
    cin>>n>>m>>kdb;
    for (int i=0; i<kdb; i++)
    {
        int a;
        cin>>a;
        kotelezovarosok.push_back((a));
    }
    for (int i=0; i<m; i++)
    {
        int a;
        int b;
        int c;
        cin>>a>>b>>c;
        szomszed l;
        l.vegpont=b;
        l.suly=c;
        v[a].push_back(l);
        l.vegpont=a;
        v[b].push_back(l);
    }
    melysegi(1,0);
    cout<<minm;
    return 0;
}