Cod sursa(job #3369522)

Utilizator Hutanu_MaiaHutanu Ioana-Maia Hutanu_Maia Data 20 octombrie 2026 20:45:44
Problema Ciclu hamiltonian de cost minim Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int n,m;
vector<pair<int,int>> v[22];
int main()
{
    fin>>n>>m;
    int x,y,c;
    for(int i=1; i<=m; i++)
    {
        fin>>x>>y>>c;
        v[x].push_back({y,c});
    }
    vector<vector<int>> dp(1<<n,vector<int>(n,1e9));
    dp[1][0]=0;
    for(int mask=3; mask<1<<n; mask+=2)
    {
        for(int bit=1; bit<n; bit++)
        {
            if((1<<bit)&mask)
            {
                for(auto x:v[bit])
                {
                    if((1<<x.first)&mask)
                        dp[mask][bit]=min(dp[mask][bit],dp[mask^(1<<bit)][x.first]+x.second);
                }
            }
        }
    }
    int minim=1e9;
    for(auto x:v[0])
        minim=min(minim,dp[(1<<n)-1][x.first]+x.second);
    fout<<minim;
    return 0;
}