Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <algorithm>
- #include <cmath>
- #include <cstring>
- #include <utility>
- using namespace std;
- int main(){
- int N, M, x, y, ans = 0;
- cin >> N >> M;
- vector<int> connect[N];
- bool adj[N][N]={};
- for(int i = 0;i < M;i++){
- cin >> x >> y;
- connect[x].push_back(y);
- connect[y].push_back(x);
- adj[x][y]=true;
- adj[y][x]=true;
- }
- for(int p1 = 0;p1 < N;p1++){
- if(connect[p1].size() > sqrt(M)){
- for(int p2,i2 = 0;i2 < connect[p1].size();i2++){
- p2 = connect[p1][i2];
- for(int p3,i3 = 0;i3 < connect[p2].size();i3++){
- p3 = connect[p2][i3];
- for(int ph,i4 = 0;i4 < connect[p3].size();i4++){
- ph = connect[p3][i4];
- if(ph==p1){
- ans++;
- //printf("%d %d %d\n",p1,p2,p3);
- }
- }
- }
- }
- }
- else{
- for(int i = 0 ;i < N;i++)if(adj[p1][i] == true)
- for(int j = i+1;j < N;j++)if(adj[p1][j] == true){
- if(adj[i][j]==true){
- ans+=2;
- //printf("%d %d %d\n",p1,i,j);
- }
- }
- }
- }
- cout << ans/6 << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement