Cod sursa(job #2546414)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 14 februarie 2020 10:11:51
Problema Balanta Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin  ("balanta.in");
ofstream fout ("balanta.out");

int n, m, nr, k, status;
int a[1050], b[1050], f[1050], greu[1050], usor[1050], mat[1050][2070];

int main(){
    fin >> n >> m;
    for (int t=1; t<=m; t++){
        fin >> k;
        for (int i=1; i<=k; i++){
            fin >> a[i];
        }
        for (int i=1; i<=k; i++){
            fin >> b[i];
        }
        fin >> status;
        if (status != 0){
            mat[++nr][0] = k;
            for (int i=1; i<=k; i++){
                mat[nr][i] = a[i];
                mat[nr][i+k] = b[i];
            }
            mat[nr][2*k+1] = status;
        }
        else if (status == 0){ //atunci solutia nu poate fi intre astea
            for (int i=1; i<=k; i++){
                f[a[i]] = 1;
                f[b[i]] = 1;
            }
        }
    }
    for (int t=1; t<=nr; t++){
        if (mat[t][2*mat[t][0]+1] == 1){

             for (int i=1; i<=mat[t][0]; i++){
                if (f[mat[t][i]] != 1){
                    greu[mat[t][i]] = 1;
                }
                if (f[mat[t][i+mat[t][0]]] != 1){
                    usor[mat[t][i+mat[t][0]]] = 1;
                }
             }
        }
        else if (mat[t][2*mat[t][0]+1] == 2){
            for (int i=1; i<=mat[t][0]; i++){
                if (f[mat[t][i]] != 1){
                    usor[mat[t][i]] = 1;
                }
                if (f[mat[t][i+mat[t][0]]] != 1){
                    greu[mat[t][i+mat[t][0]]] = 1;
                }
             }
        }
    }
    return 0;
}