zoukankan      html  css  js  c++  java
  • joyoi1957 「Poetize5」Vani和Cl2捉迷藏

    最小路径可重点覆盖。先传递闭包,然后拆点,(n-)最大匹配,看算法竞赛进阶指南。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    int n, m, uu, vv, mat[205], ans;
    bool w[205][205], vis[205];
    bool hung(int x){
    	for(int i=1; i<=n; i++)
    		if(w[x][i]){
    			if(vis[i])	continue;
    			vis[i] = true;
    			if(!mat[i] || hung(mat[i])){
    				mat[i] = x;
    				return true;
    			}
    		}
    	return false;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1; i<=m; i++){
    		scanf("%d %d", &uu, &vv);
    		w[uu][vv] = true;
    	}
    	for(int k=1; k<=n; k++)
    		for(int i=1; i<=n; i++)
    			for(int j=1; j<=n; j++)
    				w[i][j] |= w[i][k] & w[k][j];
    	for(int i=1; i<=n; i++){
    		memset(vis, 0, sizeof(vis));
    		if(hung(i))	ans++;
    	}
    	cout<<n-ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    自定义Response
    并发编程之进程
    并发编程知识储备
    正则表达式和re模块
    Scrapy框架
    http协议和Chrome抓包工具
    requests库
    Beautifulsoup
    xpath
    Mysql一些操作
  • 原文地址:https://www.cnblogs.com/poorpool/p/8742959.html
Copyright © 2011-2022 走看看