Ciao a tutti, sono nuovo sul forum. Ho partecipato alla gara OIS dell’altro giorno.
Stavo provando a risolvere dessert ma sono riuscito solo a ottenere 40 punti su 100. Qualcuno mi darebbe una mano? Questo è il codice.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int N;
cin>>N;
vector<vector<int>> friends;
friends.resize(N);
vector<int> least;
least.resize(N);
for(int i=0;i<N;i++){
int M;
cin>>M;
friends.at(i).resize(M);
int L;
cin>>L;
least.at(i)=L;
for(int j=0;j<M;j++){
int F;
cin>>F;
friends.at(i).at(j)=F;
}
}
vector<bool> order;
order.resize(N,false);
while(true){
int succ=-1;
for(int i=0;i<N;i++){
if(!order.at(i)){
int friendsOK=0;
for(int j=0;j<friends.at(i).size();j++){
if(order.at(friends.at(i).at(j))){
friendsOK++;
}
}
if(friendsOK>=least.at(i)){
succ=i;
break;
}
}
}
if(succ==-1){
break;
}
order.at(succ)=true;
}
int res=0;
for(int i=0;i<N;i++){
if(order.at(i)){
res++;
}
}
cout<<res<<endl;
return 0;
}