rt,为什么会只过 #1 和 #12
#include<bits/stdc++.h>
#define ll long long
#define pb emplace_back
#define pii pair<int,int>
#define fir first
#define sec second
#define mod (998244353ll)
#define inf (1000000000ll)
using namespace std;
int n,m,cnt;
vector<int>v[155],e[155];
int frd[155];
bool vis[155];
bool dfs(int x){
if(vis[x])return 0;
vis[x]=1;
for(auto y:v[x]){
if(!frd[y]||dfs(frd[y])){
frd[y]=x;
return 1;
}
}
return 0;
}
void dfss(int x){
if(vis[x])return;
vis[x]=1;
cout<<x<<" ";
for(auto y:e[x])
dfss(y);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;cin>>x>>y;
v[x].pb(y);
}
for(int i=1;i<=n;i++)dfs(i);
memset(vis,0,sizeof vis);
for(int i=1;i<=n;i++)
if(frd[i]){
// cout<<i<<"<->"<<frd[i]<<"\n";
e[i].pb(frd[i]);
e[frd[i]].pb(i);
cnt++;
}
for(int i=1;i<=n;i++){
if(!vis[i]&&e[i].size()==1)dfss(i),cout<<"\n";
}
cout<<n-cnt;
return 0;
}
下载测试点,最后一行的答案都是错的