二分图模板

来源:互联网 发布:网络创业优势 编辑:程序博客网 时间:2024/06/01 10:45
#include <stdio.h>#include <string.h>int g[510][510];int linker[510];int used[510];int n,k,cnt;int DFS( int u ){        int v;        for( v = 1; v <= n; v++ )        {                if( g[u][v] && !used[v] )                {                        used[v] = 1;                        if( linker[v] == -1 ||DFS(linker[v]) )                        {                                linker[v] = u;                                return 1;                        }                }        }        return 0;}int main(){        int x,y;        while( ~scanf("%d %d",&n,&k) )        {                memset(g,0,sizeof(g));                for( int i = 0; i < k; i++ )                {                        scanf("%d %d",&x,&y);                        g[x][y] = 1;                }                memset(linker,-1,sizeof(linker));                for( int i = 1; i <= n; i++ )                {                        memset(used,0,sizeof(used));                        if( DFS(i) )                                cnt++;                }                printf("%d\n",cnt);        }        return 0;}


0 0
原创粉丝点击