You are on page 1of 2

#include <iostream> #include <iostream> //Determinare dac Graful

//Determinare dac Graful este Eulerian este Hamiltonian


using namespace std; using namespace std;
int a[100][100], n, d[100], p[100], x[100]; int a[50][50], x[50], p[50], n, gasit;
int grad() int bun(int k)
{ for (int i = 1; i <= n; i++) { if (k > 1) if (a[x[k]][x[k - 1]] == 0) return
0;
if (d[i] % 2 != 0) return 0;
if (k == n) if (a[x[1]][x[n]] == 0) return 0;
return 1;}
return 1;}
int conex()
void back(int k)
{ int s, d, i;
{ if (!gasit)
x[1] = 1;
for (int i = 1; i <= n; i++)
p[1] = 1;
if (!p[i]) {
s = 1; d = 1;
x[k] = i; p[i] = 1;
while (s <= d){
if (bun(k)) if (k == n)
for (i = 1; i <= n; i++)
gasit = 1;
if (a[x[s]][i] == 1 && !p[i])
else back(k + 1);
{ d++;
p[i] = 0;
x[d] = i;
}
p[i] = 1;}
}
s++;}
int main()
if (d == n) return 1;
{
else return 0;}
int i, j;
int main()
{ int i, j; cout << "Nr de Noduri Graf = "; cin >> n;
cout << "Nr de Noduri Graf = "; cin >> n; for (i = 1; i <= n; i++)
for (i = 1; i <= n; i++) for (j = i + 1; j <= n; j++)
for (j = i + 1; j <= n; j++) {
{
cout << i << "-" << j << " :
cout << i << "-" << j << " : "; cin >> a[i][j];
"; cin >> a[i][j];
a[j][i] = a[i][j];
a[j][i] = a[i][j]; }
}
if (grad() && conex()) cout << "Graful este
back(1);
Eulerian." << endl;
if (gasit) cout << "Graful este
else cout << "Graful nu este Eulerian." <<
Hamiltonian." << endl;
endl;
else cout << "Graful nu este Hamiltonian."
<< endl;
system("pause");
return 0;
return 0;
}
}

You might also like