Math Trade
题号:NC227007
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

    Suppose a group of people have objects they want to trade, and objects they want to get in return:

Notice how none of the people listed can pair off and trade with each other. However, if Sally, Steve, and Carlos all got together, Sally could trade her clock to Steve for the doll she wants, and Steve can then trade that clock to Carlos for the painting Steve wants.
    This creation of a chain of individual trades that gets a large number of people the objects they want is called a math trade. Ideally everyone is involved in the math trade but that is not always possible (sorry Maria). The object therefore is to create a single chain of the longest length. Determining the longest math trade gets complicated if the participants have multiple items that they want to trade or obtain.  Luckily for you, we are only worried about the situation where each person has and wants exactly one item, and no item is owned by or desired by more than one person.

输入描述:

Input begins with a line containing a positive integer , the number of people interested in trading.  After this are  lines, each with three strings separated by spaces.  The first string will be the name of the trader.  The second string will be the object the trader has.  The third string will be the object the trader wants.  All trader names will be unique, and no object will be wanted by more than one person and owned by more than one person.

输出描述:

Output the length of the longest math trade.  If no trading is possible, output the phrase "No trades possible"
示例1

输入

复制
4
Sally Clock Doll
Steve Doll Painting
Carlos Painting Clock
Maria Candlestick Vase

输出

复制
3
示例2

输入

复制
4
Abby Bottlecap Card
Bob Card Spoon
Chris Spoon Chair
Dan Pencil Pen

输出

复制
No trades possible