先看这段代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int N=520;
const int M=520;
int l,r,m,cnt,vis[N],pipei[N];
vector<int> g[N];
int dfs(int x){
for(int i=0;i<g[x].size();i++){
int v=g[x][i];
if(vis[v]) continue;
vis[v]=1;
if(!pipei[v]||dfs(v)){
pipei[v]=x;
return 1;
}
}
return 0;
}
int main(){
scanf("%d%d%d",&l,&r,&m);
for(int i=1;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
g[u].push_back(v);
}
for(int i=1;i<=l;i++){
cnt+=dfs(i);
memset(vis,0,sizeof vis);
}
printf("%d",cnt);
return 0;
}
明显dfs核心部分错写成if(!pipei[v]||dfs(v))了
然后这都能60。。。这题数据很魔幻