/** * Gather the Maps! (Problem F, Practice Contest for Japan Domestic, 2005-06-19) * by Kenji Inoue, 2007-01-04 **/ #include #include using namespace std; int main() { int d[51][31]; // available dates int m[51][51]; // maps collected int n; while (cin >> n, n) { memset(d, 0, sizeof(d)); memset(m, 0, sizeof(m)); for (int i=0; i> num; for (int j=0; j> t; d[i][t] = 1; } m[i][i] = 1; // he only has his own map } for (int t=1; t<=30; t++) { // find which maps can be collected set maps; for (int i=0; i::iterator it = maps.begin(); it != maps.end(); it++) { m[i][*it] = 1; } } // check if all gathered if (maps.size() == n) { cout << t << endl; goto NEXT; } } cout << -1 << endl; NEXT: ; } return 0; }