#include <bits/stdc++.h> using namespace std; typedef long long ll; struct kr { int u, nr; }; void dfs(int v, ll* odw, vector <kr>* gr, ll& wyw, int& zl, int& nr1, int& nr2, int& nr3) { odw[v] = wyw; zl++; for(auto& i : gr[v]) { if(i.nr ^ nr1 && i.nr ^ nr2 && i.nr ^ nr3 && odw[i.u] < wyw) dfs(i.u, odw, gr, wyw, zl, nr1, nr2, nr3); } } int n, m; ll wyw, odw[200001], wyn; vector <kr> gr[200001]; int main() { scanf("%d%d", &n, &m); for(int i = 0; i < m; i++) { int a, b; scanf("%d%d", &a, &b); gr[a].push_back({b, i}); gr[b].push_back({a, i}); } for(int nr1 = 0; nr1 < m; nr1++) { for(int nr2 = nr1 + 1; nr2 < m; nr2++) { for(int nr3 = nr2 + 1; nr3 < m; nr3++) { int zl = 0; wyw += ll(1); dfs(1, odw, gr, wyw, zl, nr1, nr2, nr3); if(zl < n) wyn += ll(1); } } } printf("%lld", wyn); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <bits/stdc++.h> using namespace std; typedef long long ll; struct kr { int u, nr; }; void dfs(int v, ll* odw, vector <kr>* gr, ll& wyw, int& zl, int& nr1, int& nr2, int& nr3) { odw[v] = wyw; zl++; for(auto& i : gr[v]) { if(i.nr ^ nr1 && i.nr ^ nr2 && i.nr ^ nr3 && odw[i.u] < wyw) dfs(i.u, odw, gr, wyw, zl, nr1, nr2, nr3); } } int n, m; ll wyw, odw[200001], wyn; vector <kr> gr[200001]; int main() { scanf("%d%d", &n, &m); for(int i = 0; i < m; i++) { int a, b; scanf("%d%d", &a, &b); gr[a].push_back({b, i}); gr[b].push_back({a, i}); } for(int nr1 = 0; nr1 < m; nr1++) { for(int nr2 = nr1 + 1; nr2 < m; nr2++) { for(int nr3 = nr2 + 1; nr3 < m; nr3++) { int zl = 0; wyw += ll(1); dfs(1, odw, gr, wyw, zl, nr1, nr2, nr3); if(zl < n) wyn += ll(1); } } } printf("%lld", wyn); } |