#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
set<int>st;
int deg[100002];
vector<int>hasil[100002];
vector<int>mana[100002];
signed main(){
cin>>n>>m;
for(int q=1;q<=m;q++){
int a;
cin>>a;
st.insert(a);
}
int k;
cin>>k;
queue<int>qu;
for(int q=1;q<=k;q++){
int l,r;
cin>>l>>r;
deg[q]=l;
for(int w=1;w<=l;w++){
int zat;
cin>>zat;
mana[zat].push_back(q);
if(st.count(zat))deg[q]--;
}
for(int w=1;w<=r;w++){
int zat;
cin>>zat;
hasil[q].push_back(zat);
}
//cout<<deg[q]<<endl;
if(deg[q]==0)qu.push(q);
}
while(qu.size()){
int idx=qu.front();
qu.pop();
for(auto r : hasil[idx]){
if(st.count(r))continue;
st.insert(r);
for(auto tempat : mana[r]){
deg[tempat]--;
if(deg[tempat]==0)qu.push(tempat);
}
}
}
cout<<st.size()<<endl;
for(auto r : st){
cout<<r<<" ";
}
cout<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |