题目

香农先修班 STL 专题练习 B:http://10.191.65.243:8000/contest/11/problem/B。
原题(UVA 10763):https://vjudge.net/problem/UVA-10763

思路

简单来说就是左对右的映射和右对左的映射数目是否相同。显然可以用 来解决。

代码

#include <bits/stdc++.h>

using namespace std;

map<int, map<int, int>> a;
int t[500000][3];

int main()
{
    int n;
    cin >> n;
    a.clear();

    for (int i = 0; i < n; i++)
    {
        scanf("%d %d", &t[i][0], &t[i][1]);
        a[t[i][0]][t[i][1]]++;
    }
    int flag = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[t[i][0]][t[i][1]] != a[t[i][1]][t[i][0]])
        {
            flag = 1;
            break;
        }
    }
    if (flag == 0)
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}
最后修改:2020 年 01 月 17 日 12 : 28 PM
如果觉得我的文章对你有用,请随意赞赏