Cod sursa(job #2478992)

Utilizator alexnigaNiga Alexandru alexniga Data 23 octombrie 2019 00:07:54
Problema Dusman Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<bits/stdc++.h>

using namespace std;

ifstream f("dusman.in");
ofstream g("dusman.out");

int n, NumberOfSolutions, K, m;

vector <int> sol(1001), viz(1001);
vector <vector<int>> mat(1001,vector<int>(1001, 0));

void ShowSolution()
{
    for (int i = 1; i <= n; i++)
        g << sol[i] << " ";
    g << "\n";
}

void back_dusman(int k)
{
    if (k == n + 1)
    {
        ++NumberOfSolutions;
        if (NumberOfSolutions == K)
            {ShowSolution();
            exit(EXIT_SUCCESS);
            }
        return;
    }

    for (int i = 1; i <= n; i++)
    {
        if (viz[i] == 0)
        {
                if (mat[sol[k - 1]][i] == 0)
                    {
                        viz[i] = 1;
                        sol[k] = i;
                        //cout << "//" << sol[k - 1] << " " << sol[k];
                        back_dusman(k + 1);
                    }
            viz[i] = 0;
        }
    }
}

int main()
{

    f >> n >> K >> m;

    for (int i = 1; i <= m; i++)
    {
        int a, b;
        f >> a >> b;
        mat[a][b] = 1;
        mat[b][a] = 1;
        mat[0][i] = 0;
    }

    back_dusman(1);

    return 0;
}