Untitled
unknown
plain_text
a year ago
1.3 kB
13
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