算法
(并查集) $O(m^2)$
枚举每条边,断开当前边,若此时的连通分量 $\geqslant 2$,则把答案加一。
C++ 代码
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
#define rep(i, n) for (int i = 0; i < (n); ++i)
using std::cin;
using std::cout;
using std::vector;
int main() {
int n, m;
cin >> n >> m;
vector<int> a(m), b(m);
rep(i, m) {
cin >> a[i] >> b[i];
--a[i]; --b[i];
}
int ans = 0;
rep(i, m) {
dsu d(n);
rep(j, m) {
if (i == j) continue;
d.merge(a[j], b[j]);
}
int cnt = d.groups().size();
ans += cnt >= 2;
}
cout << ans << '\n';
return 0;
}