Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <string>
- #include <cstring>
- #include <set>
- #include <queue>
- #include <bitset>
- #include <algorithm>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- using namespace std;
- vector < vector <int> > g, gr;
- vector < vector <int> > sm;
- set <long long> ans;
- long long rrr;
- int n;
- void bfs (int v, int len)
- {
- int i, j, k;
- vector <int> tr;
- vector <int> :: iterator it, itb, itc, itd;
- long long aa;
- if (len == 2)
- for (i = 0; i < gr[v].size(); i++)
- if (gr[v][i] > v)
- rrr++;
- if (len == 3)
- for (itb = upper_bound(gr[v].begin(), gr[v].end(), v); itb != gr[v].end(); itb++)
- {
- int vb = *itb;
- rrr += int (gr[vb].end() - upper_bound(gr[vb].begin(), gr[vb].end(), vb));
- }
- if (len == 4)
- for (itb = upper_bound(gr[v].begin(), gr[v].end(), v); itb != gr[v].end(); itb++)
- {
- int vb = *itb;
- for (itc = upper_bound(gr[vb].begin(), gr[vb].end(), vb); itc != gr[vb].end(); itc++)
- {
- int vc = *itc;
- rrr += int (gr[vc].end() - upper_bound(gr[vc].begin(), gr[vc].end(), vc));
- }
- }
- }
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int k, i, j, a, b;
- cin >> n >> k;
- g.resize(n); gr.resize(n);
- sm.resize(n, vector <int> (n, 1));
- for (i = 0; i < k; i++)
- {
- cin >> a >> b;
- a--, b--;
- sm[a][b] = 0;
- sm[b][a] = 0;
- g[a].push_back(b);
- g[b].push_back(a);
- }
- for (i = 0; i < n; i++)
- sort(g[i].begin(), g[i].end());
- for (i = 0; i < n; i++)
- sm[i][i] = 0;
- for (i = 0; i < n; i++)
- {
- k = j = 0;
- while (k < g[i].size())
- {
- while (j < g[i][k])
- gr[i].push_back(j++);
- k++;
- j++;
- }
- while (j < n)
- gr[i].push_back(j++);
- }
- for (i = 2; i <= 4; i++)
- for (j = 0; j < n; j++)
- bfs(j, i);
- cout << rrr + n;
- return 0;
- }
Add Comment
Please, Sign In to add comment