salut!am si eu o problema...nu stiu cum sa verific daca o muchie apare de 2 ori...
problema era "sa se genereze toate ciclurile ale unui graf neorientat care se da prin matricea de adiacenta"
#include<iostream.h>
#include<fstream.h>
int a[20][20],s[20],i,j,m,n,x,y,z,p,t,t1,k;
fstream f("date.in",ios::in);
void init(int k){s[k]=0;}
int succesor(int k){
if(s[k]<n){s[k]++;
return 1;}
else return 0;}
int valid(int k){
if(k>1)
if(a[s[k-1]][s[k]]==0) return 0;
//nu stiu cum sa verific daca o muchie apare de 2 ori...
return 1;}
int solutie(int k){
if(s[k]==x) return 1;
else return 0;}
void tipar(){t=1;
for(i=1;i<=k;i++) cout<<s[i]<<" ";
cout<<endl;}
void back(){
k=2;init(k);
while(k>1){
while(succesor(k)){
if(valid(k))
if(solutie(k))
tipar();
else{k++;
init(k);}
}
k--;
}
}
int main(){
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) f>>a[i][j];
for(x=1;x<=n;x++)
{s[1]=x;
back();}
if(t==0) cout<<"nu exista cicluri"<<endl;}
am incercat un backtracking dar nu reusesc sa gasesc conditia aceea...
daca ma poate ajuta cineva i-as fi recunoscator...
astept raspunsuri...multumesc
Editat de moderator : Nu inteleg de ce ai postat in subiectul "Mesaje de eroare".