Pagini recente » Cod sursa (job #2790377) | Cod sursa (job #1489187) | Cod sursa (job #2486884) | Cod sursa (job #2040843) | Cod sursa (job #3315497)
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("balanta.in");
ofstream cout("balanta.out");
const int NMAX = 1024;
int n, m;
int v1[NMAX + 1], v2[NMAX + 1];
vector<int> big, small;
void make_diff(vector<int>& a, vector<int>& b) {
vector<int> result;
set_difference(a.begin(), a.end(), b.begin(), b.end(), back_inserter(result));
swap(a, result);
}
void make_intersection(vector<int>& a, vector<int>& b) {
vector<int> result;
set_intersection(a.begin(), a.end(), b.begin(), b.end(), back_inserter(result));
swap(a, result);
}
int main() {
cin >> n >> m;
small.resize(n);
big.resize(n);
for(int i = 0; i < n; i++) {
small[i] = big[i] = i + 1;
}
for(int i = 1; i <= m; i++) {
int k;
cin >> k;
vector<int> v1(k), v2(k);
for(int j = 0; j < k; j++) {
cin >> v1[j];
}
for(int j = 0; j < k; j++) {
cin >> v2[j];
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
int which;
cin >> which;
if(which == 0) {
make_diff(small, v1);
make_diff(small, v2);
make_diff(big, v1);
make_diff(big, v2);
}
else if(which == 1) {
make_intersection(big, v1);
make_intersection(small, v2);
}
else {
make_intersection(small, v1);
make_intersection(big, v2);
}
}
if(big.size() == 1 && small.size() == 0) {
cout << big[0] << '\n';
}
else if(small.size() == 1 && big.size() == 0) {
cout << small[0] << '\n';
}
else {
cout << 0 << '\n';
}
return 0;
}