Pagini recente » Cod sursa (job #3213110) | Cod sursa (job #2405120) | Cod sursa (job #219626) | Cod sursa (job #641037) | Cod sursa (job #2065003)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
#define inf 25000000
#define MAX 20
vector <pair <int, int> > G[MAX];
int a[1<<MAX][MAX];
int main()
{
int n, j, aux, m, x, y, c, i, rez;
fin>>n>>m;
while (m--)
{
fin>>x>>y>>c;
G[y].push_back(make_pair(x, c));
}
for (int i=1; i<(1<<n); i++)
for (int j=0; (1<<j)<=i; j++)
{
a[i][j]=inf;
a[1][0]=0;
if (i&(1<<j))
{
aux=i-(1 << j);
for (auto it:G[j])
if (aux & (1<<(it.first)))
a[i][j] = min(a[i][j], a[aux][it.first] + it.second);
}
}
rez=inf;
for (auto it:G[0])
rez = min(rez, a[(1<<n) - 1][it.first] + it.second);
if (rez != inf)
fout << rez << "\n";
else
fout << "Nu exista solutie\n";
return 0;
}