Untitled
unknown
plain_text
a year ago
1.3 kB
18
Indexable
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
mt19937 random_seed(time(0));
long long rnd(long long l , long long r){
if(l > r) throw invalid_argument("parameters is invalid");
uniform_int_distribution<long long> dist(l, r);
return dist(random_seed);
}
int main() {
ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
freopen("error.txt", "w", stderr);
#endif
int t;cin>>t;
while(t--){
int n;cin>>n;
map<pair<int,int> , ll>hash;
vector<pair<int , int>>edges;
for(int i = 0;i<n;i++){
int a, b;cin>>a>>b;
if(a > b)swap(a , b);
edges.emplace_back(a , b);
if(hash.count(make_pair(a , b))) {
continue;
}else{
hash[make_pair(a , b)] = rnd(1 , 1e15);
}
}
map<ll , int>res;
for(int i = 0;i<n;i++){
ll sum = 0;
for(int j = i;j<n;j++){
sum += hash[make_pair(edges[j].first , edges[j].second)];
res[sum]++;
}
}
ll ans = 0;
for(auto &val:res){
ans += val.second * (val.second - 1) / 2;
}
cout<<ans<<'\n';
}
}Editor is loading...
Leave a Comment