func_code_string: #include <bits/stdc++.h>   const int maxx = 1000001;   int x[maxx], y[maxx];   unsigned long long hash[maxx], vl[maxx], count = 0, check = 1, mul = 1;   bool compare(unsigned long long a, unsigned long long b) { return a > b; }   unsigned long long sum1ton(unsigned long long n) { return n * (n - 1) / 2; }   int main() {     int a, b;     scanf( %d %d , &a, &b);     hash[0] = 1;     for (int i = 1; i <= a; i++) {       hash[i] = hash[i - 1] * mul + 31;       mul = mul * 13 + 23;     }     for (int i = 0; i < b; i++) {       scanf( %d %d , &x[i], &y[i]);       vl[x[i]] -= hash[y[i]];       vl[y[i]] -= hash[x[i]];     }     for (int i = 0; i < b; i++) {       if (vl[x[i]] + hash[y[i]] == vl[y[i]] + hash[x[i]]) {         count++;       }     }     std::sort(vl + 1, vl + a + 1, compare);     for (int i = 1; i < a; i++) {       if (vl[i] == vl[i + 1])         check++;       else {         count += sum1ton(check);         check = 1;       }     }     count += sum1ton(check);     printf( %I64d , count);     return 0;   }   