• HNU13377:Book Club 二分图


    题意:有n个人,m种需求,给出m行,每行a,b代表a想要的书在b那里,问能不能通过交换的方法来满足每个人的需求

    思路:要符合题意的话一定是二分图。网上还一种dfs

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<memory.h>
     5 #include<vector>
     6 using namespace std;
     7 const int maxn = 20010;
     8 int uN,vN;
     9 vector<int> g[maxn];
    10 int linker[maxn];
    11 int n;
    12 bool used[maxn];
    13 bool dfs(int u) {
    14     for(int i=0;i<g[u].size(); i++) {
    15         int v=g[u][i];
    16         if(!used[v]) {
    17             used[v]=true;
    18             if(linker[v]==-1||dfs(linker[v])) {
    19                 linker[v]=u;
    20                 return true;
    21             }
    22         }
    23  
    24     }
    25     return false;
    26 }
    27  
    28 int main() {
    29     int m,i;
    30     int x,y;
    31     while(~scanf("%d%d",&n,&m)) {
    32         int ans=0;
    33         for(i=0; i<=n; i++)
    34             g[i].clear();
    35         for(i=0; i<m; i++) {
    36             scanf("%d%d",&x,&y);
    37             g[x].push_back(y);
    38         }
    39         memset(linker,-1,sizeof(linker));
    40         for(i=0; i<n; i++) {
    41             memset(used,0,sizeof(used));
    42             if(dfs(i))ans++;
    43         }
    44 //        cout<<ans<<endl;
    45         if(ans==n)cout<<"YES"<<endl;
    46         else cout<<"NO"<<endl;
    47 //        for(i=0; i<n; i++) {
    48 //            if(linker[i]==-1) {
    49 //                break;
    50 //            }
    51 //        }
    52 //        if(i==n) {
    53 //            printf("YES
    ");
    54 //        } else
    55 //            printf("NO
    ");
    56     }
    57 }
    View Code
  • 相关阅读:
    idea创建Javaweb项目
    装配bean,基于xml
    IoC(控制反转)和DI(依赖注入)
    jar包介绍
    使用的基本方法
    struts2的常量
    jar包
    调用函数,模块
    Vue中的指令(听博主说总结的很好)
    React的核心概念
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5356921.html
Copyright © 2020-2023  润新知