社区讨论
割边求调 qwq
学术版参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lzall7y9
- 此快照首次捕获于
- 2024/08/01 09:29 2 年前
- 此快照最后确认于
- 2024/08/01 09:51 2 年前
CPP
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define int long long
using namespace std;
auto mread = [](){int x;scanf("%lld", &x);return x;};
const int N = 3e4 + 5;
int n, m, ans, dfn[N], low[N], idx;
vector<pair<int, int> > v[N];
void tarjan(int x, int id){
dfn[x] = low[x] = ++idx;
for(auto t : v[x]){
if(dfn[t.fi] == 0){
tarjan(t.fi, t.se);
low[x] = min(low[x], low[t.fi]);
if(low[t.fi] > dfn[x]){
ans ++;
}
}
else if((t.se ^ 1) != id){
low[x] = min(low[x], dfn[t.fi]);
}
}
return;
}
signed main(){
int tmp = 0;
while(1){
idx = 0;
cin >> n >> m;
if(n == 0){
return 0;
}
if(tmp){
printf("\n");
}
tmp ++;
for(int i = 1; i <= n; i ++){
v[i].clear();
dfn[i] = low[i] = 0;
}
int tot = 0;
for(int j = 1, x, y; j <= m; j ++){
x = mread(), y = mread();
v[x].push_back(mp(y, tot ++));
v[y].push_back(mp(x, tot ++));
}
ans = 0;
tarjan(1, -1);
printf("%lld", ans);
}
return 0;
}
感谢感谢感谢感谢/bx
回复
共 2 条回复,欢迎继续交流。
正在加载回复...