B - Linear Algebra Test Gym - 101502B

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#include <set>
using namespace std;
const int maxn = 100000 + 10;

int u[maxn];
int v[maxn];
set<long long> s;
map<long, long> m;

int main()
{
    int T;
    scanf("%d", &T);
    while(T--) {
        m.clear();
        s.clear();
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++) {
            scanf("%lld%lld", &u[i], &v[i]);
            if (s.count(u[i]) == 0) { m[u[i]] = 1; s.insert(u[i]);}
            else m[u[i]]++;
        }
        long long ans = 0;
        for(int i = 0; i < n; i++) {
            if (v[i] == u[i]) ans += (m[u[i]] - 1);
            else ans += m[v[i]];
        }
        printf("%lld\n", ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhangzhenjunaixuxin/article/details/81225919