参考博客:
https://blog.csdn.net/sunny_hun/article/details/80627351
模板:
#include<bits\stdc++.h> using namespace std; const int maxn=500; int line[maxn][maxn];//邻接矩阵储存边 int used[maxn];//标记该点是否已使用 int ans[maxn];//记录连接的点 bool find(int x) { for(int i=1;i<=n;i++)//被连接的点 { if(line[x][i]&&!used[i]) { used[i]=1; if(!ans[i]||find(ans[i])) { ans[i]=x; return true; } } } return false; } int main() { memset(line,0,sizeof(line)); int n,m; scanf("%d %d",&n,&m);//n为点的数量,m为边的数量 for(int i=0;i<m;i++) { int a,b; scanf("%d %d",&a,&b); line[a][b]=1; } for(int i=1;i<=n;i++) { memset(used,0,sizeof(used)); find(i); } }