zoukankan      html  css  js  c++  java
  • poj 1469 COURSES 最大匹配

    题意

      P个课程,N个学生,之间有边连接,问是否可以 P个学生选择不同的P个课程。

    解题思路

      最大匹配

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    const int N = 310;
    
    int p, n;
    bool g[110][310];
    int ma[N], mb[N];
    bool vis[N];
    
    int path( int u ){
        for(int v = 1; v <= n; v++){
            if( g[u][v] && !vis[v] ){
                vis[v] = 1;
                if( ma[v] == -1 || path( ma[v] )){
                    ma[v] = u; mb[u] = v;
                    return 1;    
                }    
            }    
        }    
        return 0;
    }
    int main(){
        int T;
        scanf("%d", &T);
        while( T-- ){
            scanf("%d%d", &p, &n );
            memset( g, 0, sizeof(g));
            for(int i = 1; i <= p; i++){
                int cnt = 0, st;
                scanf("%d", &cnt );
                for(int j = 0; j < cnt; j++){
                    scanf("%d", &st);
                    g[i][st] = 1;    
                }
            }    
            memset( ma, 0xff, sizeof(ma));
            memset( mb, 0xff, sizeof(mb));
            int res = 0;
            for(int i = 1; i <= p; i++){
                if( mb[i] == -1 ){
                    memset( vis, 0, sizeof(vis));    
                    res += path( i );
                }    
            }
            puts( res == p ? "YES" : "NO" );
        }
        return 0;    
    }
  • 相关阅读:
    向值栈放List集合
    向值栈放对象
    向值栈放数据
    wsgi初探
    python_swift_project_swift使用
    python_swift_project_middleware
    ubuntu 安装 swift
    20140905
    eventlet
    resource
  • 原文地址:https://www.cnblogs.com/yefeng1627/p/2995894.html
Copyright © 2011-2022 走看看