/* -*- coding: utf-8 -*- * * 1147.cc: No.1147 土偶Ⅱ - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 100; const int INF = 1 << 29; /* typedef */ /* global variables */ int ds[MAX_N][MAX_N]; /* subroutines */ inline void setmin(int &a, int b) { if (a > b) a = b; } /* main */ int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) { fill(ds[i], ds[i] + n, INF); ds[i][i] = 0; } for (int i = 0; i < m; i++) { int a, b; scanf("%d%d", &a, &b); a--, b--; ds[a][b] = ds[b][a] = 1; } for (int k = 0; k < n; k++) for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) setmin(ds[i][j], ds[i][k] + ds[k][j]); int cnt = 0; for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) if (ds[i][j] != 2) for (int k = j + 1; k < n; k++) if (ds[i][k] != 2 && ds[j][k] != 2) cnt++; printf("%d\n", cnt); return 0; }