Cod sursa(job #1424247)

Utilizator BLz0rDospra Cristian BLz0r Data 23 aprilie 2015 19:32:28
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <cstdio>
#include <bitset>
#include <vector>
using namespace std;

#define Nmax 1030

FILE *f = fopen ( "balanta.in", "r" );
FILE *g = fopen ( "balanta.out", "w" );

vector < int > st, dr;
bitset < Nmax > sigur;

int main(){
    int N, M, K, x, r;

    fscanf ( f, "%d%d", &N, &M );

    for ( int i = 1; i <= M; ++i ){
        fscanf ( f, "%d", &K );

        st.clear();
        dr.clear();

        for ( int j = 1; j <= K; ++j ){
            fscanf ( f, "%d", &x );
            st.push_back ( x );
        }

        for ( int j = 1; j <= K; ++j ){
            fscanf ( f, "%d", &x );
            dr.push_back ( x );
        }
        fscanf ( f, "%d", &r );

        if ( r == 0 ){
            for ( int j = 0; j < K; ++j ){
                sigur[st[j]] = 1;
                sigur[dr[j]] = 1;
            }
            continue;
        }

        if ( r == 1 ){
            for ( int j = 0; j < K; ++j )
                sigur[dr[j]] = 1;

            continue;
        }

        if ( r == 2 ) {
            for ( int j = 0; j < K; ++j )
                sigur[st[j]] = 1;
        }
    }

    if ( sigur.count() < N - 1 )
        fprintf ( g, "%d", 0 );
    else
        for ( int i = 1; i <= N; ++i )
            if ( !sigur[i] ){
                fprintf ( g, "%d ", i );
                break;
            }


    return 0;
}