/* gnc ultra */ #include #include #include using namespace std; int main(void) { ifstream is("match.txt"); int n; is >> n; for(int i = 0 ; i < n ; i++){ int m; is >> m; int man[m][m]; int woman[m][m]; for(int p = 0 ; p < m ; p++){ for(int d = 0; d < m ; d++){ int t; is >> t; man[p][d] = t-1; } } for(int p = 0 ; p < m ; p++){ for(int d = 0; d < m ; d++){ int t; is >> t; woman[p][d] = t-1; } } int appman[m]; int acceptwoman[m]; for(int i = 0 ; i < m ; i ++){ appman[i] = 0; acceptwoman[i] = m; } bool end = true; while(end){ end = false; for(int i = 0 ; i < m ; i ++){ int app; app = man[i][appman[i]]; int man_lik; man_lik = find(woman[app], woman[app] + m, i) - woman[app]; if(man_lik < acceptwoman[app]){ //cout << "man = " << i << " woman = " << app << endl; end = true; if(acceptwoman[app] != m){ appman[woman[app][acceptwoman[app]]]++; } acceptwoman[app] = man_lik; }else if(man_lik > acceptwoman[app]){ appman[i] ++; end = true; } } } for(int i = 0 ; i < m ; i ++){ cout << man[i][appman[i]]+1 << (i == m - 1? "" : " "); } cout << endl; } }