Cod sursa(job #2482380)

Utilizator i.uniodCaramida Iustina-Andreea i.uniod Data 28 octombrie 2019 10:43:31
Problema Ciclu hamiltonian de cost minim Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");

struct cost
{
    int x, y, c;
} ;
cost v[400];

int n, m, sum, nr;
int L[20];

inline bool cmp(const cost &a, const cost &b)
{
    return a.c < b.c;
}

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= m; ++ i)
        fin >> v[i].x >> v[i].y >> v[i].c;

    sort(v+1, v+m+1, cmp);

    for(int i = 0; i <= n; ++ i)
        L[i] = i;

    int i = 1;
    while(nr - 1 < n)
    {
        if(L[v[i].x] != L[v[i].y])
        {
            int a = L[v[i].x], b = L[v[i].y];
            for(int j = 0; j <= n; ++ j)
                if(L[j] == b)
                    L[j] = a;
            nr ++;
            sum +=v[i].c;
        }
        i ++;
    }

    if(sum)
        fout << sum;
    else
        fout << "Nu exista solutie";
    return 0;
}