zoukankan      html  css  js  c++  java
  • 【NOIP2010提高组】关押罪犯

    本题稍难,
    排序+并查集即可。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    struct pid{int x,y,z;}a[100001];
    int f[20001],l[20001][1234];
    bool by[20001];
    int ans=2147483647,n,m;
    
    int cmp(pid x,pid y) {return x.z>y.z;}
    
    void cz(int x)
    {
    	by[x]=0;
    	for (int i=1;i<=l[x][0];i++)
    		if (!by[l[x][i]])
    			f[l[x][i]]=f[x]%2+1,cz(l[x][i]);
    }
    
    int main()
    {
    	scanf("%d%d",&n,&m);
    	for (int i=1;i<=m;i++)
    		scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
    	sort(a+1,a+m+1,cmp);
    	for (int i=1;i<=m;i++)
    	{
    		if (f[a[i].x]!=0&&f[a[i].y]!=0)
    		{
    			if (f[a[i].x]==f[a[i].y])
    			{
    				memset(by,0,sizeof(by));
    				f[a[i].x]=f[a[i].x]%2+1;cz(a[i].x);
    				if (by[a[i].y]) return 0&printf("%d
    ",a[i].z);
    			}
    		}
    		else if (f[a[i].x]!=0) f[a[i].y]=f[a[i].x]%2+1;
    		else if (f[a[i].y]!=0) f[a[i].x]=f[a[i].y]%2+1;
    		else f[a[i].x]=1,f[a[i].y]=2;
    		l[a[i].x][++l[a[i].x][0]]=a[i].y;
    		l[a[i].y][++l[a[i].y][0]]=a[i].x;
    	}
    	printf("0
    ");
    	return 0;
    }
    
    转载需注明出处。
  • 相关阅读:
    自然常数e怎么得来的?
    一元线性回归模型
    最小二乘法
    Box-Cox转换
    需要的数学技能
    偏导数
    FineReport 表格分类
    FineReport 普通报表
    FineReport 单元格
    FineReport创建普通报表的流程
  • 原文地址:https://www.cnblogs.com/jz929/p/11817696.html
Copyright © 2011-2022 走看看