AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 257. 关押罪犯

作者: 作者的头像   wyc1996 ,  2020-12-15 10:58:50 ,  阅读 4


1


#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N=20010,M=200010;
int h[N],e[M],ne[M],w[M],idx;
int color[N];
int n,m;

void add(int a,int b,int c)
{
    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
}

bool dfs(int u,int c,int t)
{
    color[u]=c;
    for(int i=h[u];~i;i=ne[i]){
        int j=e[i];
        if(w[i]<=t)continue;
        if(color[j]==-1){
            if(!dfs(j,!c,t))return false;
        }
        else if(color[j]==c)return false;
    }
    return true;
}

bool check(int mid)
{
    memset(color,-1,sizeof color);
    for(int i=1;i<=n;i++)
        if(color[i]==-1)
            if(!dfs(i,0,mid))
                return false;
    return true;
}

int main()
{
    scanf("%d%d",&n,&m);
    memset(h,-1,sizeof h);

    for(int i=0;i<m;i++){
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c); 
        add(a,b,c);add(b,a,c);
    }
    int l=0,r=1e9;
    while(l<r){
        int mid=l+r>>1;
        if(check(mid))r=mid;
        else l=mid+1;
    }
    printf("%d\n",r);
    return 0;
}

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息