zoukankan      html  css  js  c++  java
  • Codeforces Round #134 (Div. 2) 并查集

    1.阅读题,读明白题就能过。

    2.贪心题,简单想一想就能过。

    3.并查集,抽象出来图论模型就能过,抽象不出来,累死你。

    按照《图论算法理论、实现及应用》书上的模板敲,RE在第48组,现在也不知道为什么。

    于是敲常规的并查集:

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    struct P{
        int x,y;
    }p[100000];
    int parent[100000];
    int n;
    int find(int x){
        return x==parent[x] ? x : parent[x]=find(parent[x]);
    }
    int main(){
    
        while(scanf("%d",&n)!=EOF){
            for(int i=0;i<n;i++){
                cin >> p[i].x >> p[i].y;
            }
            for(int i=0;i<n;i++){
                parent[i]=i;
            }
            for(int i=0;i<n;i++){
                for(int j=i+1;j<n;j++){
                    if(p[i].x==p[j].x || p[i].y==p[j].y){
                        if(find(i)==find(j)) continue;
                        else parent[find(i)]=find(j);
                    }
                }
            }
            int cou=0;
            for(int i=0;i<n;i++){
                if(parent[i]==i) cou++;
            }
            printf("%d\n",cou-1);
        }
        return 0;
    }

    发现飞哥的神并查集+优化模板:

    
    
    int find(int x){
        return x==parent[x] ? x : parent[x]=find(parent[x]);
    }
    for(int i=0;i<n;i++){
                for(int j=i+1;j<n;j++){
                    if(p[i].x==p[j].x || p[i].y==p[j].y){
                        if(find(i)==find(j)) continue;
                        else parent[parent[i]]=j;
                    }
                }
            }
  • 相关阅读:
    线上查询及帮助命令:
    windows: 2.7 3.5 (主要)
    get the execution time of a sql statement.
    java-kafka安装以及使用案例
    java-黑马头条 weex前端路由
    MYSQL安装
    缓存
    Flask中current_app和g对象
    [ValueError: signal only works in main thread]
    Flask-SQLAlchemy操作
  • 原文地址:https://www.cnblogs.com/markliu/p/2645851.html
Copyright © 2011-2022 走看看