제출 #143994

#제출 시각아이디문제언어결과실행 시간메모리
143994AldeaDanutAlkemija (COCI18_alkemija)C++14
80 / 80
199 ms12000 KiB
#include <iostream> #include <vector> #include <deque> #include <bitset> using namespace std; struct reactie{ int l,r; int nec; vector<int> p; }; int n,m,k,i,j,elem,R,cnt,sol; reactie r[100001]; bitset <100001> f; deque <int> c; vector <int> lista[100001]; int main(){ cin>>n>>m; for(i=1;i<=m;i++){ cin>>j; f[j]=1; sol++; } cin>>k; for(i=1;i<=k;i++){ cin>>r[i].l>>r[i].r; r[i].nec=r[i].l; for(j=1;j<=r[i].l;j++){ cin>>elem; if(f[elem]) r[i].nec--; lista[elem].push_back(i); } for(j=1;j<=r[i].r;j++){ cin>>elem; r[i].p.push_back(elem); } if(r[i].nec==0) c.push_back(i); } while(!c.empty()){ R=c.front(); c.pop_front(); for(i=0;i<r[R].r;i++){ elem=r[R].p[i]; if(f[elem]==0){ f[elem]=1; sol++; cnt=lista[elem].size(); for(j=0;j<cnt;j++){ r[lista[elem][j]].nec--; if(r[lista[elem][j]].nec==0) c.push_back(lista[elem][j]); } } } } cout<<sol<<"\n"; for(i=1;i<=n;i++) if(f[i]) cout<<i<<" "; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...