#include #include #include #define N (100) #define FILENAME "C:\\data\\match.txt" using namespace std; ifstream fin; bool tester(void) { int m[N][N], w[N][N]; int mp[N], wp[N]; int n; // Input fin >> n; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { fin >> m[i][j]; m[i][j]--; } } for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { fin >> w[i][j]; w[i][j]--; } } // Output for(int i = 0; i < n; i++) { cin >> mp[i]; mp[i]--; wp[mp[i]] = i; } bool stable = true; // Loop by Man i for(int i = 0; i < n; i++) { // Man i prefers Woman j to Woman mp[i] for(int j = 0; j < n; j++) { if(m[i][j] == mp[i]) break; int z = m[i][j]; // Is Woman z prefers Man i to Man wp[j]? for(int k = 0; k < n; k++) { if(w[z][k] == i) { stable = false; break; } if(w[z][k] == wp[z]) break; } // Break if unstable if(!stable) break; } // Break if unstable if(!stable) break; } cout << (stable ? "STABLE" : "UNSTABLE") << endl; return stable; } int main(void) { int n; fin.open(FILENAME); fin >> n; bool flag = true; for(int i = 0; i < n; i++) flag &= tester(); cout << (flag ? "Yes" : "No") << endl; }