zoukankan      html  css  js  c++  java
  • 洛谷 [P2756] 飞行员配对方案问题

    二分图匹配裸题
    可以用匈牙利做,简单高效
    输出具体的匹配路径时 ,直接输出match数组即可

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cstdlib>
    using namespace std;
    int init(){
    	int rv=0,fh=1;
    	char c=getchar();
    	while(c<'0'||c>'9'){
    		if(c=='-') fh=-1;
    		c=getchar();
    	}
    	while(c>='0'&&c<='9'){
    		rv=(rv<<1)+(rv<<3)+c-'0';
    		c=getchar();
    	}
    	return fh*rv;
    }
    int m,n,g[105][105],match[205],ans;
    bool f[205];
    bool hungarian(int u){
    	for(int i=1;i<=g[u][0];i++){
    		int v=g[u][i];
    		if(!f[v]){
    			f[v]=1;
    			if(!match[v]||hungarian(match[v])){
    				match[v]=u;
    				match[u]=v;
    				return 1;
    			}
    		}
    	}
    	return 0;
    }
    int main(){
    	m=init();n=init();
    	while(1){
    		int u=init(),v=init();
    		if(u==-1) break;
    		g[u][++g[u][0]]=v;
    	}
    	for(int i=1;i<=m;i++){
    		memset(f,0,sizeof(f));
    		if(hungarian(i)) ans++;
    	}
    	cout<<ans<<endl;
    	for(int i=1;i<=m;i++){
    		if(match[i]) printf("%d %d
    ",i,match[i]);
    	}
    }
    
  • 相关阅读:
    设计模式-状态模式
    设计模式-策略模式
    Spring MVC 梳理
    Spring MVC 梳理
    设计模式-总结
    Spring boot 梳理
    Spring boot 梳理
    [DP题]最长上升子序列
    NOIP2013 Day1
    20171025日程
  • 原文地址:https://www.cnblogs.com/Mr-WolframsMgcBox/p/8244402.html
Copyright © 2011-2022 走看看