Cod sursa(job #1330061)

Utilizator assa98Andrei Stanciu assa98 Data 30 ianuarie 2015 12:23:29
Problema Balanta Scor 100
Compilator cpp Status done
Runda sssdffsdd Marime 1.94 kb
#include <fstream>
#include <algorithm>
#include <set>
using namespace std;

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

const int MAX_N = 1030;

int a[MAX_N][MAX_N];

int viz1[MAX_N];
int viz2[MAX_N];

int main() {
    int n, m;
    fin >> n >> m;
    for(int i = 1; i <= m; i++) {
        fin >> a[i][0];
        for(int j = 1; j <= 2 * a[i][0] + 1; j++) {
            fin >> a[i][j];
        }
    }

    for(int i = 1; i <= n; i++) {
        viz1[i] = viz2[i] = 1;
    }

    for(int i = 1; i <= m; i++) {
        if(a[i][2 * a[i][0] + 1] == 0) {
            for(int j = 1; j <= 2 * a[i][0]; j++) {
                viz1[a[i][j]] = viz2[a[i][j]] = 0;
            }
        }
        else {
            if(a[i][2 * a[i][0] + 1] == 1) {
                for(int j = 1; j <= a[i][0]; j++) {
                    viz1[a[i][j]]++;
                }
                for(int j = a[i][0] + 1; j <= 2 * a[i][0]; j++) {
                    viz2[a[i][j]]++;
                }
            }
            else {
                for(int j = a[i][0] + 1; j <= 2 * a[i][0]; j++) {
                    viz1[a[i][j]]++;
                }
                for(int j = 1; j <= a[i][0]; j++) {
                    viz2[a[i][j]]++;
                }
            }
            
            for(int j = 1; j <= n; j++) {
                if(viz1[j] == 2) {
                    viz1[j] = 1;
                }
                else {
                    viz1[j] = 0;
                }
                if(viz2[j] == 2) {
                    viz2[j] = 1;
                }
                else {
                    viz2[j] = 0;
                }
            }
        }
    }

    int cat = 0;
    int val = 0;
    for(int i = 1; i <= n; i++) {
        if(viz1[i]) {
            cat++;
            val = i;
        }
        if(viz2[i]) {
            cat++;
            val = i;
        }
    }
    
    if(cat == 1) {
        fout << val;
        return 0;
    }
    
    fout << 0;
    return 0;
}