Cod sursa(job #3163064)

Utilizator SSKMFSS KMF SSKMF Data 30 octombrie 2023 14:37:57
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
using namespace std;

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

int numar_noduri , ordine , sir[1001];
bool interzis[1001][1001];
bool folosit[1001];

void Backtracking (int indice)
{
    if (indice > numar_noduri)
    {
        ordine--;
        if (!ordine)
        {
            for (indice = 1 ; indice <= numar_noduri ; indice++)
                { cout << sir[indice] << ' '; }

            cout.close(); cin.close();
            exit(0);
        }

        return;
    }

    for (int nod_vecin = 1 ; nod_vecin <= numar_noduri ; nod_vecin++) {
        if (!folosit[nod_vecin] && !interzis[sir[indice - 1]][nod_vecin]) {
            sir[indice] = nod_vecin;
            folosit[nod_vecin] = true;
            Backtracking(indice + 1);
            folosit[nod_vecin] = false;
        }
    }
}

int main ()
{
    int interzise;
    cin >> numar_noduri >> ordine >> interzise;

    for (int nod[2] ; interzise ; interzise--)
        { cin >> nod[0] >> nod[1]; interzis[nod[0]][nod[1]] = interzis[nod[1]][nod[0]] = true; }

    for (int inceput = 1 ; inceput <= numar_noduri ; inceput++)
        { sir[1] = inceput; folosit[inceput] = true; Backtracking(2); folosit[inceput] = false; }

    cout.close(); cin.close();
    return 0;
}