5561 2023. 07. 27 11:19:33 zsombor Labirintus cpp17 Elfogadva 100/100 507ms 74028 KiB
#include <iostream>
#include <vector>
#include <queue>
#include "labirintus.h"
using namespace std;

int r,c;
vector <vector <int>> l;
vector <int> p(11e5,0);
vector <int> sz(11e5,1);
queue <int>q;
vector <int> P(11e5,0);
vector <int> SZ(11e5,1);

int holvan(int a){
    return (a==p[a]?a:holvan(p[a]));
}

void unio(int a,int b){
    a=holvan(a);
    b=holvan(b);
    if (a==b) return;
    if (sz[a]>sz[b]) swap(a,b);
    p[a]=b;
    sz[b]+=sz[a];
    q.push(a);
    q.push(b);
}

void betesz(int I,int J){
    l[I][J]=1;
    for (int i=I-1;i<=I+1;i++){
        for (int j=J-1;j<=J+1;j++){
            if (i==r || j==-1) {unio(I*c+J,r*c);continue;}
            if (i==-1 || j==c) {unio(I*c+J,r*c+1);continue;}
            if (l[i][j]) unio(I*c+J,i*c+j);
        }
    }
}

void init_labyrinth(int R, int C, vector <vector <int>> L){
    r=R;c=C;l=L;
    for (int i=0;i<r*c+2;i++) p[i]=i;
    for (int i=0;i<r;i++){
        for (int j=0;j<c;j++){
            if (l[i][j]) betesz(i,j);
        }
    }
    P=p;SZ=sz;
}

bool can_escape(int N, vector <int> U, vector <int> V){
    for (int i=0;i<N;i++) betesz(U[i],V[i]);
    bool ret=(holvan(r*c)!=holvan(r*c+1));
    for (int i=0;i<N;i++) l[U[i]][V[i]]=0;
    while(q.size()){
        p[q.front()]=P[q.front()];
        sz[q.front()]=SZ[q.front()];
        q.pop();
    }
    return ret;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 19ms 36064 KiB
2 Elfogadva 193ms 68024 KiB
subtask2 15/15
3 Elfogadva 50ms 37988 KiB
4 Elfogadva 25ms 38288 KiB
5 Elfogadva 135ms 37424 KiB
6 Elfogadva 137ms 37060 KiB
7 Elfogadva 97ms 38764 KiB
8 Elfogadva 101ms 38976 KiB
subtask3 18/18
9 Elfogadva 231ms 38664 KiB
10 Elfogadva 207ms 38140 KiB
11 Elfogadva 505ms 70756 KiB
12 Elfogadva 430ms 70792 KiB
13 Elfogadva 481ms 70796 KiB
14 Elfogadva 507ms 72588 KiB
subtask4 28/28
15 Elfogadva 282ms 71136 KiB
16 Elfogadva 280ms 71264 KiB
17 Elfogadva 286ms 71472 KiB
18 Elfogadva 166ms 71536 KiB
19 Elfogadva 266ms 72704 KiB
20 Elfogadva 136ms 71532 KiB
21 Elfogadva 131ms 71536 KiB
22 Elfogadva 270ms 72964 KiB
23 Elfogadva 268ms 72964 KiB
subtask5 39/39
24 Elfogadva 52ms 41256 KiB
25 Elfogadva 32ms 41012 KiB
26 Elfogadva 135ms 41636 KiB
27 Elfogadva 137ms 41140 KiB
28 Elfogadva 134ms 41832 KiB
29 Elfogadva 134ms 41676 KiB
30 Elfogadva 448ms 72996 KiB
31 Elfogadva 460ms 72996 KiB
32 Elfogadva 349ms 70008 KiB
33 Elfogadva 432ms 73848 KiB
34 Elfogadva 256ms 74028 KiB
35 Elfogadva 248ms 73912 KiB
36 Elfogadva 321ms 72384 KiB
37 Elfogadva 319ms 72340 KiB
38 Elfogadva 360ms 72464 KiB
39 Elfogadva 321ms 72340 KiB