Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- const N = 500
- var men = [N][N + 2]int{}
- var women = [N][N + 2]int{}
- func fix(man int) {
- i := man
- for j := men[i][N+1] + 1; j < N; j++ {
- k := men[i][j]
- men[i][N+1] = j
- if women[k][N] == -1 {
- women[k][N] = i
- men[i][N] = k
- break
- } else {
- eng := women[k][N]
- if women[k][eng] > women[k][i] {
- women[k][N] = i
- men[i][N] = k
- fix(eng)
- break
- }
- }
- }
- }
- func main() {
- for i := 0; i < N; i++ {
- for j := 0; j < N; j++ {
- fmt.Scanf("%d\n", &men[i][j])
- }
- men[i][N], men[i][N+1] = -1, -1
- }
- for i := 0; i < N; i++ {
- for j := 0; j < N; j++ {
- t := 0
- fmt.Scanf("%d\n", &t)
- women[i][t] = j
- }
- women[i][N], women[i][N+1] = -1, -1
- }
- for i := 0; i < N; i++ {
- for j := 0; j < N; j++ {
- k := men[i][j]
- men[i][N+1] = j
- if women[k][N] == -1 {
- women[k][N] = i
- men[i][N] = k
- break
- } else {
- eng := women[k][N]
- if women[k][eng] > women[k][i] {
- women[k][N] = i
- men[i][N] = k
- fix(eng)
- break
- }
- }
- }
- }
- for i := 0; i < N; i++ {
- fmt.Printf("%d %d\n", i, men[i][N])
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement