Guest User

Untitled

a guest
May 22nd, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <string>
  5. #include <cstring>
  6. #include <set>
  7. #include <queue>
  8. #include <bitset>
  9. #include <algorithm>
  10. #include <cstdio>
  11. #include <cstdlib>
  12. #include <cmath>
  13.  
  14. using namespace std;
  15.  
  16. vector < vector <int> > g, gr;
  17. vector < vector <int> > sm;
  18. set <long long> ans;
  19. long long rrr;
  20. int n;
  21.  
  22. void bfs (int v, int len)
  23. {
  24.     int i, j, k;
  25.     vector <int> tr;
  26.     vector <int> :: iterator it, itb, itc, itd;
  27.     long long aa;
  28.  
  29.     if (len == 2)
  30.         for (i = 0; i < gr[v].size(); i++)
  31.             if (gr[v][i] > v)
  32.                 rrr++;
  33.  
  34.     if (len == 3)
  35.         for (itb = upper_bound(gr[v].begin(), gr[v].end(), v); itb != gr[v].end(); itb++)
  36.         {
  37.             int vb = *itb;
  38.  
  39.             rrr += int (gr[vb].end() - upper_bound(gr[vb].begin(), gr[vb].end(), vb));
  40.         }
  41.  
  42.     if (len == 4)
  43.         for (itb = upper_bound(gr[v].begin(), gr[v].end(), v); itb != gr[v].end(); itb++)
  44.         {
  45.             int vb = *itb;
  46.  
  47.             for (itc = upper_bound(gr[vb].begin(), gr[vb].end(), vb); itc != gr[vb].end(); itc++)
  48.             {
  49.                 int vc = *itc;
  50.  
  51.                 rrr += int (gr[vc].end() - upper_bound(gr[vc].begin(), gr[vc].end(), vc));
  52.             }
  53.         }
  54. }
  55.  
  56. int main()
  57. {
  58.     freopen("input.txt", "r", stdin);
  59.     freopen("output.txt", "w", stdout);
  60.  
  61.     int k, i, j, a, b;
  62.  
  63.     cin >> n >> k;
  64.  
  65.     g.resize(n); gr.resize(n);
  66.     sm.resize(n, vector <int> (n, 1));
  67.  
  68.     for (i = 0; i < k; i++)
  69.     {
  70.         cin >> a >> b;
  71.  
  72.         a--, b--;
  73.  
  74.         sm[a][b] = 0;
  75.         sm[b][a] = 0;
  76.  
  77.         g[a].push_back(b);
  78.         g[b].push_back(a);
  79.     }
  80.  
  81.     for (i = 0; i < n; i++)
  82.         sort(g[i].begin(), g[i].end());
  83.  
  84.     for (i = 0; i < n; i++)
  85.         sm[i][i] = 0;
  86.  
  87.     for (i = 0; i < n; i++)
  88.     {
  89.         k = j = 0;
  90.  
  91.         while (k < g[i].size())
  92.         {
  93.             while (j < g[i][k])
  94.                 gr[i].push_back(j++);
  95.  
  96.             k++;
  97.             j++;
  98.         }
  99.  
  100.         while (j < n)
  101.             gr[i].push_back(j++);
  102.     }
  103.  
  104.     for (i = 2; i <= 4; i++)
  105.         for (j = 0; j < n; j++)
  106.             bfs(j, i);
  107.  
  108.     cout << rrr + n;
  109.  
  110.     return 0;
  111. }
Add Comment
Please, Sign In to add comment