#include #include using namespace std; bool knows_any(const vector> &knows, const int i) { const int n = knows.size(); for (int j = 0; j < i; j++) { if (knows[i][j]) { return true; } } return false; } bool known_by_all(const vector> &knows, const int i) { for (int j = 0; j < i; j++) { if (!knows[j][i]) { return false; } } return true; } int superstar(const vector> &knows, const int n) { if (n == 1) return 1; int star = superstar(knows, n - 1); if (star != -1 && knows[n - 1][star] && !knows[star][n - 1]) { return star; } if (known_by_all(knows, n - 1) && !knows_any(knows, n - 1)) { return n - 1; } return -1; } int superstar(const vector> &knows) { const int n = knows.size(); int i = 0; for (int j = 1; j < n; j++) { if (knows[i][j] || !knows[j][i]) { i = j; } } if (known_by_all(knows, i) && !knows_any(knows, i)) { return i; } return -1; } int main(void) { int n; cin >> n; vector> knows(n, vector(n)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { bool b; cin >> b; knows[i][j] = b; } } cout << superstar(knows) << endl; return 0; }