P3405 [USACO16DEC]Cities and States S 【map使用】

题目

https://www.luogu.com.cn/problem/P3405

 

 思路

该题使用map十分方便,但是map的使用我忘了…………

int i = m[key]; 表示m[key]中value的个数

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
using namespace std;
map<int,int>list[200005];
int change(string a)
{
    return (a[0]-64) * 26 + (a[1]-64);

}
int main()
{
    int n;
    scanf("%d", &n);
    int ans = 0;
    for (int i = 0; i < n; i++)
    {
        string a, b;
        cin >> a >> b;
        int aa = change(a.substr(0,2));
        int bb = change(b);
        ans += list[bb][aa];//加上与自己对称的bb aa节点的个数(刚开始肯定是0,但是当轮到与自己对称的时候就会加一)
        if (aa == bb)ans -= list[aa][aa];//减去来自同一省的
        list[aa][bb]++;//这个节点的个数加一
    }
    printf("%d", ans);

}

 

posted @ 2020-06-28 10:40  Jason66661010  阅读(167)  评论(0编辑  收藏  举报