1 条题解

  • 0
    @ 2022-5-1 10:44:30
    /*****************************************
    备注:
    ******************************************/
    #include <queue>
    #include <math.h>
    #include <stack>
    #include <stdio.h>
    #include <iostream>
    #include <vector>
    #include <iomanip>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define LL long long
    const int N = 800 + 10;
    const int INF = 0x3f3f3f3f;
    int n,k,a[N][N],vis[N],d[N];
    bool dfs(int id)
    {
    	for(int i=1;i<=n;i++)
    	{
    		if(vis[i]||!a[id][i])
    			continue;
    		vis[i]=1;
    		if(!d[i]||dfs(d[i]))
    		{
    			d[i]=id;
    			return true;
    		}
    	}
    	return false;
    }
    int main()
    {
    	cin>>n>>k;
    	for(int i=0;i<k;i++)
    	{
    		int x,y;
    		cin>>x>>y;
    		a[x][y]=1;
    	}
    	int ans=0;
    	for(int i=1;i<=n;i++)
    	{
    		memset(vis,0,sizeof vis);
    		if(dfs(i))
    			ans++;
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    1494
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    7
    已通过
    4
    上传者