Pagini recente » Cod sursa (job #2561704) | Cod sursa (job #2524608) | Cod sursa (job #3041905) | Cod sursa (job #706219) | Cod sursa (job #3254704)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int N,M,dp[(1 << 20)][20],a,b,c,i,j,bitmask,last,newmask,sol=1000000000;
int A[20][20];
deque< pair<int,int> > dq;
bool found;
int main(){
cin >> N >> M;
for (i = 1;i <= M;i++){
cin >> a >> b >> c;
A[a][b] = c;
}
dq.push_back({1,0});
while (!dq.empty()){
bitmask = dq.front().first;
last = dq.front().second;
for (int i = 0;i < N;i++){
if ((bitmask == ((1 << N) - 1)) && A[last][i] != 0 && i == 0){
sol = min(sol,dp[bitmask][last] + A[last][i]);
found = 1;
}
if ((bitmask & (1 << i)) == 0 && A[last][i] != 0){
newmask = (bitmask | (1 << i));
dp[newmask][i] = dp[bitmask][last] + A[last][i];
dq.push_back({newmask,i});
}
}
dq.pop_front();
}
if (!found)
cout << "Nu exista solutie";
else
cout << sol;
}