题目描述
为了让奶牛在智力上受到刺激,农夫约翰在谷仓的墙上放了一张美国地图。由于奶牛在谷仓里花了很多时间盯着这张地图,他们开始注意到一些奇怪的关系。例如,城市Flint,在MI省,或者Miami在FL省,他们有一种特殊的关系:“Flint”市前两个字母就是“FL”省,迈阿密前两个字母是“MI”省。
让我们说,两个城市是一个“特殊的一对”,如果他们满足这个属性,来自不同的省。奶牛想知道有多少特殊的城市存在。请帮助他们解决这个有趣的地理难题!
输入格式
输入的第一行包含 N (1≤N≤200,000),是地图上的城市数量。
下一行包含两个字符串:一个城市的名称(字符串至少2个最多10个大写字母),和它的两个字母的州代码(一串2个大写字母)。注意状态代码可能像ZQ,这并不是一个真正的美国。同一名称的多个城市可以存在,但它们将处于不同的州。
输出格式
请输出特殊城市对数。
输入输出样例
输入
6
MIAMI FL
DALLAS TX
FLINT MI
CLEMSON SC
BOSTON MA
ORLANDO FL
输出
1
#include <iostream>
using namespace std;
int h[676][676];
int n, x, y;
int main()
{
string a, b;
cin >> n;
int res = 0;
for (int i = 0; i < n; i ++ )
{
cin >> a >> b;
x = (a[0] - 'A') * 26 + a[1] - 'A';
y = (b[0] - 'A') * 26 + b[1] - 'A';
if (x != y) h[x][y] ++;
res += h[y][x];
}
cout << res;
return 0;
}