• 二分图匹配模板题


    2013-2014 ACM-ICPC, NEERC, Eastern Subregional Contest 

     1 /*************************************************************************
     2     > File Name: a.cpp
     3     > Author: QWX
     4     > Mail: 
     5     > Created Time: Fri 05 Oct 2018 06:37:54 AM PDT
     6  ************************************************************************/
     7 
     8 
     9 //{{{ #include
    10 #include<iostream>
    11 #include<cstdio>
    12 #include<algorithm>
    13 #include<vector>
    14 #include<cmath>
    15 #include<queue>
    16 #include<map>
    17 #include<set>
    18 #include<string>
    19 #include<cstring>
    20 #include<complex>
    21 #include<bits/stdc++.h>
    22 #define mp make_pair
    23 #define pb push_back
    24 #define first fi
    25 #define second se
    26 #define pw(x) (1ll << (x))
    27 #define sz(x) ((int)(x).size())
    28 #define all(x) (x).begin(),(x).end()
    29 #define rep(i,l,r) for(int i=(l);i<(r);i++)
    30 #define per(i,r,l) for(int i=(r);i>=(l);i--)
    31 #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
    32 #define eps 1e-9
    33 #define pii pair<int,int>
    34 #define vi vector<int> 
    35 #define PIE acos(-1)
    36 #define cl(a,b) memset(a,b,sizeof(a))
    37 #define fastio ios::sync_with_stdio(false);cin.tie(0);
    38 #define lson l , mid , ls
    39 #define rson mid + 1 , r , rs
    40 #define ls (rt<<1)
    41 #define rs (ls|1)
    42 #define INF 0x3f3f3f3f
    43 #define LINF 0x3f3f3f3f3f3f3f3f
    44 #define ll long long
    45 #define ull unsigned long long
    46 #define dd(x) cout << #x << " = " << (x) << "," 
    47 #define de(x) cout << #x << " = " << (x) << "
    " 
    48 #define endl "
    "
    49 using namespace std;
    50 //}}}
    51 int n,a,b;
    52 const int N=507;
    53 vi g[N],v0,v1;
    54 
    55 namespace maxmatch
    56 {
    57     int link[N],vis[N];
    58     bool dfs(int c){
    59         for(auto t:g[c]){
    60             if(vis[t])continue;vis[t]=1;
    61             if(link[t]==-1||dfs(link[t]))return link[t]=c,1;
    62         }
    63         return 0;
    64     }
    65     int solve(int n,int m){
    66         cl(link,-1);
    67         int ret=0;
    68         rep(i,0,n){
    69             cl(vis,0);
    70             ret+=dfs(i);
    71         }
    72         return ret;
    73     }
    74 }
    75 
    76 int main()
    77 {
    78     cin>>a>>b>>n;
    79     int s0=0,s1=0;
    80     rep(i,0,n){
    81         int t,op;
    82         cin>>t>>op;
    83         if(op==0)s0++,v0.pb(t);
    84         else if(op==1)s1++,v1.pb(t);
    85     }
    86     rep(i,0,sz(v0))rep(j,0,sz(v1)){
    87         if(v1[j]-v0[i]>=a||(v1[j]-v0[i]<=b&&v1[j]-v0[i]>=0))
    88             g[i].pb(j);
    89     }
    90     int ans=maxmatch::solve(s0,s1);
    91 //    de(ans); 
    92     if(s0==s1&&ans==s0){
    93         puts("No reason");
    94         rep(i,0,sz(v0))cout<<v0[maxmatch::link[i]]<<" "<<v1[i]<<endl;
    95     }else puts("Liar");
    96     return 0;
    97 }
    View Code
  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/klaycf/p/9751641.html
Copyright © 2020-2023  润新知