Se da urmatoarea problema: Se citeste un graf orientat cu n varfuri si m arce prin lista arcelor. Se da numar natural k mai mic decat n si k varfuri ale grafului. Afisati toate drumurile elementare care au ca extremitate initiala varful 1, ca extremitate finala varful n si care trec prin cele k varfuri citite in ordinea in care au fost citite. Rezolvare: #include <fstream> using namespace std; ifstream fin("date.in"); ofstream fout("date.out"); int A[50][50],n,m,k; int x[50],p[50],pus[50],b[50]; void afis(int n) { for(int i=1;i<=n;i++) fout<<x[i]<<" "; fout<<endl; } int bun(int pas) { if(p[x[pas]]>=2) for(int i=1;i<=k;i++) if(p[b[i]]>0 && p[b[i]]<p[x[pas]] && !pus[b[i]]) return 0; return 1; } int sol(int pas) { for(int i=1;i<=k;i++) if(!pus[b[i]]) return 0; return 1; } void back(int k, int pas) { for(int i=1;i<=n;i++) if(!pus[i] && A[x[pas-1]][i]) { x[pas]=i; pus[i]=1; if(bun(pas)) if(x[pas]==n && sol(pas)) afis(pas); else back(k,pas+1); pus[i]=0; } } int main() { int v1,v2; fin>>n>>m>>k; for(int i=1;i<=m;i++) { fin>>v1>>v2; A[v1][v2]=1; } for(int i=1;i<=k;i++) { fin>>b[i]; p[b[i]]=i; } x[1]=1; pus[1]=1; back(k,2); fin.close(); fout.close(); return 0; } Imi poate explica cineva problema in detaliu? functiile sol, bun si back... nu inteleg de ce trebuie sa returneze valoarea 0 respectiv 1 si cand ... o are de explicat o cunostiinta sa treaca un examen multumesc anticipat!