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

    题目链接:传送门

    题目思路:并查集高级应用(类似食物链那道题),主要是维护两个集合(监狱里犯人的关系),同一个集合里的是朋友,否则是敌人,如果敌人在同一间监狱里,

                则最小的最大冲突值求出。

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #include <cstring>
    #include <stack>
    #include <cctype>
    #include <queue>
    #include <string>
    #include <vector>
    #include <set>
    #include <map>
    #include <climits>
    #define lson root<<1,l,mid
    #define rson root<<1|1,mid+1,r
    #define fi first
    #define se second
    #define seg int root,int l,int r
    #define ping(x,y) ((x-y)*(x-y))
    #define mst(x,y) memset(x,y,sizeof(x))
    #define mcp(x,y) memcpy(x,y,sizeof(y))
    #define Min(x,y) (x<y?x:y)
    #define Max(x,y) (x>y?x:y)
    using namespace std;
    #define gamma 0.5772156649015328606065120
    #define MOD 100000007
    #define inf 0x3f3f3f3f
    #define N 100005
    #define maxn 10001000
    typedef long long LL;
    typedef pair<int,int> PII;
    
    struct Node{
        int x,y;
        int v;
        bool operator<(const Node &a)const{
            return v>a.v;
        }
    }node[N];
    
    int fp[N<<1];
    
    int findp(int x){return fp[x]==x?x:fp[x]=findp(fp[x]);}
    
    int main(){
        int i,x,y,m,n;
        scanf("%d%d",&n,&m);
        for(i=0;i<m;++i){
            scanf("%d%d%d",&node[i].x,&node[i].y,&node[i].v);
        }
        for(i=0;i<=n<<1;++i) fp[i]=i;
        sort(node,node+m);   ///贪心思想
        int ans=0;
        for(i=0;i<m;++i){
            x=node[i].x;
            y=node[i].y;
            int xx=findp(x);
            int yy=findp(y);
            if(xx==yy){
                ans=node[i].v;
                break;
            }
            fp[xx]=findp(y+n);  ///x与y的敌人肯定在同一个监狱
            fp[yy]=findp(x+n);  ///同理y与x的敌人肯定在一个监狱
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    Codeforces 1005D:Polycarp and Div 3
    HURST 1116:选美大赛(LIS+路径输出)
    洛谷 P1164:小A点菜(DP/DFS)
    HDU 1159:Common Subsequence(LCS模板)
    51Nod 1007:正整数分组(01背包)
    bzoj3993 [SDOI2015]星际战争
    cogs1341 永无乡
    cogs1533 [HNOI2002]营业额统计
    cogs62 [HNOI2004] 宠物收养所
    cogs1439 货车运输
  • 原文地址:https://www.cnblogs.com/Kurokey/p/5451163.html
Copyright © 2011-2022 走看看