private static void Main(string[] args)
{
int numTestCases = int.Parse(Console.ReadLine());
for (int testCaseNum = 0; testCaseNum < numTestCases; testCaseNum++)
{
int numPairs = int.Parse(Console.ReadLine());
Person[] men = new Person[numPairs];
Person[] women = new Person[numPairs];
//initialize men and women
for (int personNumber = 0; personNumber < numPairs; personNumber++)
{
Person woman = new Person();
woman.IsWoman = true;
woman.Number = personNumber;
Person man = new Person();
man.IsWoman = false;
man.Number = personNumber;
men[personNumber] = man;
women[personNumber] = woman;
}
//gather mens preferencess
for (int manNumber = 0; manNumber < numPairs; manNumber++)
{
var prefLine = GetSplitInts();
Person curMan = men[manNumber];
for (int rankNumber = 0; rankNumber < numPairs; rankNumber++)
{
Person curWoman = women[prefLine[rankNumber]];
curMan.Preferences.Add(curWoman);
}
}
//gather female preferneces
for (int womanNumber = 0; womanNumber < numPairs; womanNumber++)
{
var prefLine = GetSplitInts();
Person curWoman = women[womanNumber];
for (int rankNumber = 0; rankNumber < numPairs; rankNumber++)
{
Person curMan = men[prefLine[rankNumber]];
curWoman.Preferences.Add(curMan);
}
}
DoMatching(men, women, numPairs);
Console.WriteLine("Case {0}:", (testCaseNum + 1));
for (int i = 0; i < numPairs; i++)
{
Console.WriteLine("{0} marries {1}",
men[i].Name,
men[i].CurrentMatch.Name);
}
}
}