zoukankan      html  css  js  c++  java
  • Luogu P1525 关押罪犯

    flag--
    题目链接

    思路#

    不想写了。。一个二分答案+二分图染色的水题蓝题竟然写了我四十分钟

    注意易错点:

    1.因为我在染色时用的的是dfs,所以有冲突时不能简单的return而要用一个全局变量记录是否有过冲突

    2.二分害人啊。。。多测几组数据吧

    Code#

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=2e5+10;
    int read()
    {
    	int f=1,a=0;
    	char ch=getchar();
    	while(ch<'0'||ch>'9'){
    		if(ch=='-'){
    			f=-f;
    		}
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9'){
    		a=a*10+ch-'0';
    		ch=getchar();
    	}
    	return a*f;
    }
    struct node{
    	int to,next,w;
    }edge[MAXN];
    
    int color[MAXN],head[MAXN];
    int n,m,L,R,cnt,mid;
    bool flag;
    void addedge(int x,int y,int w)
    {
    	edge[++cnt].to=y;
    	edge[cnt].w=w;
    	edge[cnt].next=head[x];
    	head[x]=cnt;
    }
    
    void dfs(int x,int col)
    {
    //	cout<<"x="<<x<<" col="<<col<<endl;
    	color[x]=col;
    	for(int i=head[x];i;i=edge[i].next){
    		int y=edge[i].to;
    		if(edge[i].w<=mid||color[y]==3-col)	continue;
    		if(col==color[y]){
    //			cout<<"fail1
    ";
    			flag=1;
    			return;
    		}
    		dfs(y,3-col);
    		if(flag)	return;
    	}
    }
    
    bool check()
    {
    	memset(color,0,sizeof(color)),flag=0;
    	for(int i=1;i<=n;++i){
    		if(color[i]==0){
    			dfs(i,1);
    			if(flag){
    //				cout<<"fail2
    ";
    				return 0;
    			}
    		}
    	}
    	return 1;
    }
    
    int main()
    {
    //	freopen("test.in","r",stdin);
    //	freopen(".out","w",stdout);
    	n=read(),m=read();
    	for(int i=1;i<=m;i++){
    		int a=read(),b=read(),c=read();
    		R=max(R,c);
    		addedge(a,b,c);
    		addedge(b,a,c);
    	}
    	R++;
    	while(L<R){
    //		puts("midfind");
    		mid=(L+R)>>1;		
    //		cout<<L<<" "<<mid<<" "<<R<<endl;
    
    		if(check()){
    			R=mid;
    		}else{
    //			cout<<"fail3
    ";
    			L=mid+1;
    		}
    	}
    //	cout<<L<<" "<<mid<<" "<<R<<endl;
    	cout<<L<<endl;
    	return 0;
    }
    
  • 相关阅读:
    如何编写linux下nand flash驱动-4
    Windows代码heap内存分析实战
    堆内存破坏检测实战--附完整调试过程
    排序算法:冒泡排序
    HDOJ 2802 F(N)
    HDOJ 1715 大菲波数
    HDOJ 1214 圆桌会议
    HDOJ 3466 Proud Merchants
    HDOJ 1215 七夕节
    HDOJ 2073 无限的路
  • 原文地址:https://www.cnblogs.com/zhu-chen/p/11610915.html
Copyright © 2011-2022 走看看