• 【P1141】01迷宫 {并查集}


    1、ptr -> x == (*ptr).x != *ptr.x

    2、并查集寻父亲形式参数要!用!引!用!

    #include <iostream>
    #include <queue>
    using namespace std;
    
    class node{
        public:
            node():v(0),num(0),vis(0),x(0),y(0),pa(this){}
            bool v;
            int num;
            bool vis;
            int x;
            int y;
            node* pa;
    };
    
    int n,m;
    int chx[4] = {0,1,0,-1};
    int chy[4] = {-1,0,1,0};
    node graph[1002][1002];
    
    node* ancst(node& a){
        return ( a.pa == &a )? &a : ancst(*(a.pa));
    }
    
    bool ok(int x,int y,bool val){
        return (x < 1 || y < 1 || x > n || y > n || graph[x][y].vis || graph[x][y].v == val) ? 0 : 1;
    }
    
    void bfs(int x,int y){
        node* source = &(graph[x][y]); 
        if(source -> vis){
            source -> num = ancst(*source) -> num;
            return;
        }
        queue<node> q;
        q.push(*source);
        source -> vis = 1;
        int ans = 1;
        while(!q.empty()){
            node now = q.front();
            q.pop();
            for(int i = 0;i < 4;++i){
                int newx = now.x + chx[i];
                int newy = now.y + chy[i];
                if(ok(newx,newy,now.v)){
                    q.push(graph[newx][newy]);
                    graph[newx][newy].vis = 1;
                    graph[newx][newy].pa = ancst(now);
                    ++ans;
                }
            }
        }
        source -> num = ans;
        return;
    }
    
    int main(){
        cin >> n >> m;
        char now;
        for(int i = 1;i <= n;++i){
            for(int j = 1;j <= n;++j){
                cin >> now;
                graph[i][j].v = (now - '0');
                graph[i][j].x = i;
                graph[i][j].y = j;
            }
        }
        int x,y;
        for(int i = 0;i < m;++i){
            cin >> x >> y;
            bfs(x,y);
            cout << graph[x][y].num << endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    django序列化器Serializers
    django中模型类变更问题
    django图书管理系统-外键字段的增删改查
    django图书管理系统模型创建
    django中使用KindEditor上传图片
    成长
    git提交代码的经验
    react项目打包
    node——moudle
    git
  • 原文地址:https://www.cnblogs.com/c-come/p/10293749.html
Copyright © 2020-2023  润新知