Cod sursa(job #2155746)

Utilizator andr3i_kaabAndrei Ciineanu andr3i_kaab Data 8 martie 2018 02:36:57
Problema Ciclu hamiltonian de cost minim Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
//#include <iostream>
#include <fstream>
#include <vector>
#define oo 999999999
using namespace std;

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

const int N=32;
int n, m, viz[N], dmin=999999999; //d, dmin=999999999, k, node;
vector <pair <int, int> > v[N];

// i nodul curent, d costul, k contorul
void dfs(int i, int d, int k)
{
    viz[i]=1;
    for (int j=0; j<v[i].size(); j++)
    {
        if (!viz[v[i][j].first])
          dfs(v[i][j].first, d+v[i][j].second, k+1);
        if (k==n && v[i][j].first==0)
          dmin=min(dmin, d+v[i][j].second);
    }
    viz[i]=0;
}
int main()
{
    int i, j, x, y, c;
    f>>n>>m;
    for (i=1; i<=m; i++)
    {
        f>>x>>y>>c;
        v[x].push_back(make_pair(y, c));
    }

    dfs(0, 0, 1);

    if (dmin==oo) cout<<"Nu exista solutie";
             else cout<<dmin;
    return 0;
}