Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Problema tata – descrierea soluției
- Un vector de tați t trebuie să conțină o singură valoare de 0. Dacă în vector este o singură valoarea nulă, atunci se construiesc listele de adiacență L asociate unui graf orientat și pentru fiecare t[i] = j, cu j != 0 se adaugă în lista L[j] valoarea i. Se face apoi parcurgerea DFS(rad), unde rad este poziția din vectorul de tați unde t[rad] = 0. La final, dacă toate nodurile au fost vizitate, atunci este vectorul de tați este asociat unui arbore cu rădăcină. În caz contrar, nu este arbore. Complexitate O(n).
- */
- #include <iostream>
- using namespace std;
- int F[100001];
- int main()
- {
- int n;
- cin>>n;
- int x;
- for(int i=1;i<=n;++i)
- cin>>x,++F[x];
- bool ok=true;
- for(int i=1;i<=n;++i)
- if(F[i]==1)
- {
- ok=false;
- break;
- }
- if(!F[0])
- {
- cout<<"NU";
- return 0;
- }
- if(!ok)
- cout<<"NU";
- else
- cout<<"DA";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement