Submission #145131

#TimeUsernameProblemLanguageResultExecution timeMemory
145131bogdan_buzatuAlkemija (COCI18_alkemija)C++14
80 / 80
197 ms12276 KiB
#include <iostream>
#include <vector>
using namespace std;

struct reactie{
    int needed;
    int contsol;
    int contramase;
    vector<int>soli;
}v[100010];

vector<int>a[100010];
int freq[100010],checked[100010],q[100010];
int rightd,lefts=1;
int n,m,x;
int k,y,curent,curentt,cont;


int main(){
    cin>>n>>m;

    for(int i=1;i<=m;i++){
        cin>>x;
        freq[x]=1;
    }
    cin>>k;

    for(int i=1;i<=k;i++){
        cin>>v[i].contsol>>v[i].needed;
        v[i].contramase=v[i].contsol;
        for(int j=1;j<=v[i].contsol;j++){
            cin>>x;
            a[x].push_back(i);
            if(freq[x]==1){
                v[i].contramase--;
                if(v[i].contramase==0){
                    rightd++;
                    q[rightd]=i;
                    checked[i]=1;
                }
            }
        }
        for(int j=1; j<=v[i].needed; j++){
            cin>>x;
            v[i].soli.push_back(x);
        }
    }

    while(lefts<=rightd){
        curent=q[lefts];
        for(int i=0; i<v[curent].soli.size(); i++){
            y=v[curent].soli[i];
            if(freq[y]==0){
                freq[y]=1;
                for(int j=0; j<a[y].size(); j++){
                    curentt=a[y][j];
                    if(checked[curentt]==0){
                        v[curentt].contramase--;
                        if(v[curentt].contramase==0){
                            rightd++;
                            q[rightd]=curentt;
                            checked[curentt]=1;
                        }
                    }
                }
            }
        }
        lefts++;
    }

    for(int i=1;i<=n;i++){
        if (freq[i]==1){
            cont++;
        }
    }

    cout<<cont<<"\n";

    for(int i=1;i<=n;i++){
        if (freq[i]==1){
            cout<<i<<" ";
        }
    }
}

Compilation message (stderr)

alkemija.cpp: In function 'int main()':
alkemija.cpp:51:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0; i<v[curent].soli.size(); i++){
                      ~^~~~~~~~~~~~~~~~~~~~~~
alkemija.cpp:55:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 for(int j=0; j<a[y].size(); j++){
                              ~^~~~~~~~~~~~
#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...