[POI1999]汇编电路

成绩 0 开启时间 2013年01月16日 星期三 11:45
折扣 0.8 折扣时间 2013年01月16日 星期三 11:45
允许迟交 关闭时间 2013年01月16日 星期三 11:45
输入文件 ukl.in 输出文件 ukl.out
【问题描述】

   Bytetel 公司决定改进他们生产的计算机。他们想用一种称为汇编电路的特殊系统来代替汇编程序。汇编程序由独立的作业。每个作业由四个元素组成:

  • 用于取数据的两个寄存器
  • 须进行的基本操作
  • 用于写数据的寄存器

我们假定最多只有 26 个寄存器。它们用小写英文字母表示。这有 4 个基本操作它们用大写字母 A, B, C, D 表示。
一个汇编电路有:

  • 输入端定向到寄存器,指定的寄存器的初始值被送到输入端。
  • 输出端也定向到寄存器,它们的结果被送到寄存器

一个电路中有几个门。每一个门有两个输入和一个输出。一个门以它的输入完成一个基本操作并将结果送到它的输出端。一个门的输入端和电路的输出端都连接着其他门的输出端或者电路的输入端。一个门的输出端和电路的输入端可以连接着许多其他门的输入端或者电路的输出端。连接不可以连成圈。

一个汇编电路等价于一个汇编程序。汇编程序由寄存器的初始值产生的结果与汇编电路产生的结果相同。

任务

写一个程序:

  • 从输入文件读入一个汇编程序的描述。
  • 计算汇编电路最少要使用的寄存器数目。

将结果写到输出文件 。


【输入格式】

在输入文件的第一行有一个整数 n(1 <= n < 1000) ,表示汇编程序的命令个数。

在接下来的 n 行中每行表示一条汇编命令。每一行都用四个字母来描述,第一个字母表示基本操作: A,B,C 或 D 。第二个和第三个字母(小写英文字母)表示寄存器的编号,表示输入数据的位置。第四个字母是寄存器的编号,表示结果存储的位置。

【输出格式】

在输出文件的第一行有一个整数,表示汇编电路所需门的个数。

【输入样例】

ukl.in

8
Afbc
Bfbd
Cddd
Bcbc
Afcc
Afbf
Cfbb
Dfdb

ukl.out
6

图形

一个与题目中汇编程序等价的汇编电路的图形