fbpx

Problema #2171 – pluricex1 – Rezolvari PBInfo

de Mihai-Alexandru

Anul acesta se organizează prima ediție a Olimpiadei Pluridisciplinare pentru Centrele de Excelență, PluriCEX. Fiecare Centru de Excelență din țară va trimite la concurs o echipă formată din k membri (toți participanți la Centrul de Excelență). Echipa va trebui să rezolve probleme interdisciplinare, disciplinele vizate fiind cele de la Centrul de Excelenţă (D discipline, pe care le vom considera numerotate de la 1 la D).

Exemplu

pluricex1.in

6 3 5
1 2
2 1 4
3 2 4 3
1 5
2 3 1
1 3

pluricex1.out

2 3 4
3 4 5
#include <bits/stdc++.h>

using namespace std;

ifstream cin("pluricex1.in");
ofstream cout("pluricex1.out");

int n , p[10] , cnt , x[10] , m , d , M[25][25];

void sol()
{
    int s[11] = {0};
    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; M[x[i]][j] != 0 ; j++)
            s[M[x[i]][j]] = 1;
    int ok = 1;
    for(int i = 1 ; i <= d ; i++)
        if(s[i] == 0) ok = 0;
    if(ok == 1)
    {
        for(int i = 1 ; i <= m ; i++)
            cout << x[i] << " ";
        cout << '\n';
    }
}

void back(int k)
{
    for(int i = x[k - 1] + 1; i <= n; ++i)
    {
        x[k] = i;
        if(k == m) sol();
        else back(k + 1);
    }
}

int main()
{
    cin >> n >> m >> d;
    for(int i = 1 ; i <= n ; i++)
    {
        int a;
        cin >> a;
        for(int j = 1 ; j <= a ; j++)
            cin >> M[i][j];
    }
    back(1);
    return 0;
}
Comentarii

S-ar putea sa iti placa