Cod sursa(job #2168375)

Utilizator SerbanMaerMaerean Serban SerbanMaer Data 14 martie 2018 10:38:06
Problema Ciclu hamiltonian de cost minim Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, m, s, a, b;
int x[20][20], st[20], 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()
{
    in>>n>>m;
    for (int i=1; i<=m; i++)
        {
            in>>a>>b;
            in>>x[a][b];
        }
    DFS(0,1,0);

    if (sol<2000000000)
        out<<sol;
    else
        out<<"Nu exista solutie";
    return 0;
}