本题使用嵌套哈希表以降低时间复杂度。
#include <iostream>
#include <map>
using namespace std;
int main(){
int n,sum=0;
string s1,s2;
cin>>n;
map<string,map<string,int>> m; //嵌套map
for(int i=0;i<n;i++){
cin>>s1>>s2;
m[s1.substr(0,2)][s2]++;
}
for(auto [a,inner_map]:m){
for(auto [b,count1]:inner_map){
if(a==b) continue;
if(m.count(b) && m[b].count(a))
sum+=count1*m[b][a];
}
}
cout<<sum/2;
return 0;
}



京公网安备 11010502036488号