Monday, June 22, 2015

UVa 10227 - Forests

// UVa 10227 - Forests

#include <iostream>
#include <string.h>
#include <sstream>
using namespace std;

int main() {
	string l;
	int tt;
	cin >> tt;
	getline(cin, l);
	getline(cin, l);
	for (; tt; tt--) {
		int p, t;
		getline(cin, l);
		istringstream strm2(l);
		strm2 >> p >> t;
		bool see[100][100];
		memset(see, false, sizeof(see));
		while (getline(cin, l) && l.length() > 0) {
			int a, b;
			istringstream strm(l);
			strm >> a >> b;
			see[a][b] = true;
		}
		bool diff[100];
		int sol = 0;
		memset(diff, true, sizeof(diff));
		for (int i = 1; i <= p; i++)
			if (diff[i]) {
				sol++;
				for (int j = i + 1; j <= p; j++)
					if (diff[j]) {
						bool same = true;
						for (int k = 1; k <= t; k++)
							if (see[i][k] != see[j][k]) {
								same = false;
								break;
							}
						if (same)
							diff[j] = false;
					}
			}
		cout << sol << endl;
		if (tt > 1)
			cout << endl;
	}
	return 0;
}

No comments:

Post a Comment