#include #include #include using namespace std ; int main() { int n, m ; cin >> n >> m ; vector deg(n) ; vector > e(m) ; for (int i=0; i> a >> b ; a-- ; b-- ; if (a > b) swap(a, b) ; deg[a]++ ; deg[b]++ ; e[i] = make_pair(a, b) ; } vector inte(n) ; vector intn(n) ; int lo = 1 ; int hi = n-1 ; for (int i=0; i0; i--) intn[i-1] += intn[i] ; for (int i=n-1; i>0; i--) inte[i-1] += inte[i] ; int r = 0 ; for (int ce=lo; ce<=hi; ce++) { int cs = intn[ce] ; int clique_edges = inte[ce] ; // cerr << "At ce " << ce << " cs " << cs << " edges " << clique_edges << endl ; if (2 * clique_edges == cs * (cs - 1)) { r = 1 ; for (int i=0; i= ce && deg[i] == cs-1) || (deg[i] < ce && deg[i] == cs)) r++ ; // can move this into or out of the clique break ; } } cout << r << endl ; }