Pagini recente » Cod sursa (job #413438) | Cod sursa (job #1278206) | Cod sursa (job #384252) | Cod sursa (job #1186494) | Cod sursa (job #3163064)
#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;
}