zoukankan      html  css  js  c++  java
  • BZOJ [Scoi2010]游戏

    题解:

    解法一:建立图论模型,发现只要联通块中有环则这个联通块中的值都可以被攻击到

    如果是树,则只能攻击size-1个

    解法二:二分图匹配,二分答案,看看是否能攻击到mid

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int u=10000;
    
    int n;
    
    int father[u+1];
    int isinc[u+1];
    int siz[u+1];
    int Getf(int x){
    	if(father[x]==x)return x;
    	return father[x]=Getf(father[x]);
    }
    void Unionn(int x,int y){
    	int fx=Getf(x);
    	int fy=Getf(y);
    	if(fx!=fy){
    		father[fx]=fy;
    		siz[fy]+=siz[fx];
    		isinc[fy]=isinc[fy]|isinc[fx];
    	}
    }
    
    
    int main(){
    	for(int i=1;i<=u;++i)father[i]=i;
    	for(int i=1;i<=u;++i)siz[i]=1;
    	scanf("%d",&n);
    	while(n--){
    		int x,y;
    		scanf("%d%d",&x,&y);
    		if(Getf(x)==Getf(y)){
    			isinc[Getf(x)]=1;
    		}else{
    			Unionn(x,y);
    		}
    	}
    	
    	for(int i=1;i<=u;++i){
    		int f=Getf(i);
    		if(isinc[f])continue;
    		if(siz[f]==1){
    			printf("%d
    ",i-1);
    			return 0;
    		}
    		--siz[f];
    	}
    	printf("%d
    ",u);
    	return 0;
    }
    

      

    自己还是太辣鸡了
  • 相关阅读:
    vscode插件推荐
    Node.js连接mysql
    vscode设置语言
    sql查询某字段的相同值
    CORS跨域请求C#版
    NPOI之C#下载Excel
    Linux常用命令记录
    C#汉字转拼音
    C#读写txt文件
    linux修改文件权限命令(chmod)
  • 原文地址:https://www.cnblogs.com/zzyer/p/8457085.html
Copyright © 2011-2022 走看看