Cod sursa(job #2262723)

Utilizator tigeraOprea Tereza Emilia tigera Data 17 octombrie 2018 19:25:36
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
//
//  main.cpp
//  produs_cartezian
//
//  Created by Tereza Oprea on 16/10/2018.
//  Copyright © 2018 Tereza Oprea. All rights reserved.
//

#include <fstream>

using namespace std;

ifstream fin ("pc.in");
ofstream fout ("pc.out");

int st[20], n, card[20], a[20][20];


int pune_val (int niv)
{
    if (st[niv] < card[niv] && niv <= n)
    {
        st[niv]++;
        return 1;
    }
    return 0;
}

int solutie (int niv)
{
    if (niv == n)
        return 1;
    return 0;
}

void tipar()
{
    for (int i=1; i<=n; i++)
        fout << a[i][st[i]] << ' ';
    fout << '\n';
}

void backtr()
{
    int niv = 1, ams;
    while (niv>0)
    {
        ams  = pune_val(niv);
        if (ams == 1)
        {
            if (solutie (niv) == 1)
                tipar();
            else
            {
                niv++;
                st[niv] = 0;
            }
        }
        else
            niv--;
    }
}

int main ()
{
    fin >> n;
    for (int i=1; i<=n; i++)
    {
        fin >> card[i];
        for (int j=1; j<=card[i]; j++)
            fin >> a[i][j];
    }
    backtr();
}