Cod sursa(job #2168024)

Utilizator obi10Rob Aro obi10 Data 14 martie 2018 09:14:30
Problema Ciclu hamiltonian de cost minim Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;

ifstream f("hamilton.in");
ofstream g("hamilton.out");

int x[20][20],st[20],n,sol=2000000000;
bool viz[20];

void dfs(int a, int nr, int s)
{
    int i;
    viz[a]=1;
    if(nr==n && x[a][0])
    {
        if(sol>s+x[a][0])
            sol=s+x[a][0];

    }
    else
    {
    for(i=0;i<n;i++)
    {
        if(!viz[i] && x[a][i])
            dfs(i,nr+1,s+x[a][i]);
    }
    }
    viz[a]=0;
}


int main()
{
    int i,m,s=0,a,b;
    f>>n>>m;
    for(i=1;i<=m;i++)
        {
            f>>a;
            f>>b;
            f>>x[a][b];
        }
    dfs(0,1,0);
    if(sol<2000000000)
        g<<sol;
    else
        g<<"Nu exista solutie";
    return 0;
}