Cod sursa(job #1982374)

Utilizator LizaSzabo Liza Liza Data 18 mai 2017 16:12:40
Problema Ciclu hamiltonian de cost minim Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
const int NMax=18;
int N,M,A[NMax][NMax],minn=2000000000,S,V[NMax],Use[NMax];

void Read()
{
    fin>>N>>M;
    for(int i=1;i<=M;++i)
    {
        int x,y,z;
        fin>>x>>y>>z;
        A[x][y]=z;
    }
}

void Hamilton(int i)
{
    for(int j=0;j<=N-1;++j)
    {
        if((Use[j]==0 && A[V[i-1]][j]!=0))
        {
            V[i]=j;
            Use[j]=1;
            S=S+A[V[i-1]][j];
            if(i==N && V[N]==0)
            {
                minn=min(minn,S);
            }
            Hamilton(i+1);
            Use[j]=0;
            S=S-A[V[i-1]][j];
        }
    }
}

int main()
{
    Read();
    Hamilton(1);
    if (minn==2000000000)
        fout<<"Nu exista solutie\n";
    else
    fout<<minn<<"\n";
    return 0;
}