题解 | 鞋带难题
鞋带难题
https://www.nowcoder.com/practice/04238c060cce4e14a9e2d885836174c0
#include<bits/stdc++.h>
using namespace std;
const int N=110;
vector<set<int>> vs(N);
int n,m;
bool vis[N];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
int a,b;
for(int i=1;i<=m;i++){
cin>>a>>b;
vs[a].insert(b);
vs[b].insert(a);
}
int cnt=0;
while(true){
bool f=false;
vector<int> del;
cnt++;
for(int i=1;i<=n;i++){
if(vis[i]==true) continue;
if(vs[i].size()==1){
del.push_back(i);
}
}
for(int i=1;i<=n;i++){
if(vis[i]==true) continue;
for(int j:del){
vis[j]=true;
f=true;
vs[i].erase(j);
}
}
if(f==false){
break;
}
}
cout<<cnt-1<<endl;
return 0;
}
