Pagini recente » Cod sursa (job #2150932) | Cod sursa (job #1251367) | Cod sursa (job #852898) | Cod sursa (job #507785) | Cod sursa (job #773958)
Cod sursa(job #773958)
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#define LE 20
#define inf 1<<30
using namespace std;
ifstream f("hamilton.in");
ofstream g("hamilton.out");
int n,A[LE][LE],sum,st[LE],cost,rez,fr[LE],m,i,x,y;
void sums()
{
sum=0;
for(int j=2;j<=n;++j)
{
if (A[st[j-1]][st[j]]==0) return ;
sum+=A[st[j-1]][st[j]];
}
if (A[st[n]][1]) {
sum+=A[st[n]][st[1]];
rez=min(rez,sum);
}
}
int main()
{
f>>n>>m;
for(i=1;i<=m;++i)
{
f>>x>>y>>cost;
A[x+1][y+1]=cost;
}
st[1]=1;
rez=inf;
for(i=2;i<=n;++i) st[i]=i;
for(i=1;i<=300000;++i){
random_shuffle(st+2,st+n+1);
sums();
}
if (rez==inf) g<<"Nu exista solutie"; else
g<<rez<<'\n';
f.close();g.close();
return 0;
}