Cod sursa(job #2507210)

Utilizator Anca.ioanaMuscalagiu Anca Ioana Anca.ioana Data 9 decembrie 2019 19:45:17
Problema Ciclu hamiltonian de cost minim Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
#define inf INT_MAX - 10
using namespace std;
ifstream f("hamilton.in");
ofstream g("hamilton.out");
int n, m,sol;
vector < pair <int, int> > L[19];
int U[19];

void Citire()
{  int i, x, y ,c;
    f>>n>>m;
    for(i=1;i<=m;i++)
    { f>>x>>y>>c;
     L[x].push_back(make_pair(y,c));
    }
}
void DFS(int nod, int nr, int cost)
{ U[nod]=1;
    int i,vec;
    for(i=0;i<L[nod].size();i++)
     { vec=L[nod][i].first;
        if(U[vec]==0)
         DFS(vec,nr+1,cost+L[nod][i].second);
        if(nr==n && L[nod][i].first==0)
            sol=min(sol, cost+L[nod][i].second);
     }
   U[nod]=0;
}
int main()
{ sol=inf;
Citire();

DFS(0,1,0);
if(sol == inf) g<<"Nu exista solutie";
else g<<sol;
f.close();
g.close();
    return 0;
}