Cod sursa(job #2280573)

Utilizator LorenaMariaHantig Lorena LorenaMaria Data 10 noiembrie 2018 20:53:41
Problema Ciclu hamiltonian de cost minim Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
using namespace std;
ifstream in("hamilton.in");
ofstream out("hamilton.out");
int n,m,x,y,r[401],c[401][401],mini=400000000;
bool a[401][401],v[401],ok;
void dfs(int k)
{ r[++y]=k;
  x=k;
  v[k]=1;
  for(int i=1;i<=n;i++)
  { if(a[k][i] && !v[i])
       dfs(i);
  }
  if(y==n && a[k][1])
  { int s=c[k][1];
    for(int i=2;i<=y;i++)
      s+=c[r[i-1]][r[i]];
    if(mini>s)
       mini=s;
    ok=1;
  }
  v[k]=0;
  y--;
}
int main()
{ in>>n>>m;
  for(int i=1;i<=m;i++)
  { in>>x>>y;
    x++,y++;
    in>>c[x][y];
    a[x][y]=1;
  }
  y=0;
  dfs(1);
  if(ok)
     out<<mini;
  else
     out<<"Nu exista solutie";
  in.close();
  out.close();
  return 0;
}