제출 #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...