Cod sursa(job #2398570)

Utilizator greelioGreenio Greely greelio Data 5 aprilie 2019 19:02:46
Problema Ciclu hamiltonian de cost minim Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include<bits/stdc++.h>

using namespace std;

int n,m,a[50][50],b[50];
int mn=1e9;

int main() {
    ifstream cin("hamilton.in");
    ofstream cout("hamilton.out");
    cin>>n>>m;
    for (int i=1; i<=m; ++i) {
        int x,y,c; cin>>x>>y>>c; ++x;++y;
        a[x][y]=c;
    }
    for (int i=1; i<=n; ++i) b[i]=i;
    do {
        int s=0,u=1; b[n+1]=b[1];
        for (int i=1; i<=n; ++i) {
            if (a[b[i]][b[i+1]]) s+=a[b[i]][b[i+1]];
            else {
                u=0; break;
            }
        }
        if (u) {
            mn=min(mn,s);
        }
    } while (next_permutation(b+1,b+1+n));

    if (mn!=1e9) cout<<mn;
    else cout<<"Nu exista solutie";

    return 0;
}