169632025-05-19 17:47:49horkaLabirintuscpp17Forditási hiba
#include "labirintus.h"
using namespace std;
#include <bits/stdc++.h>
#include <cassert>
#include <cstdio>

#include <vector>
vector<vector<int>> d;
int n,m;
void init_labyrinth(int r, int c, std::vector<std::vector<int>> L) {
    //cout<<"itt"<<endl;
    n=r,m=c;
    d.assign(n+2, vector<int> (m+2, 1));
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            d[i][j]=L[i-1][j-1];
    return;
}
vector<array<int, 2>> dir{{0,1},{1,0},{-1,0},{0,-1}};
bool can_escape(int N, std::vector<int> u, std::vector<int> v) {
    //cout<<"itt2"<<endl;
    for(int i=0; i<N; i++)
    {
        d[u[i]+1][v[i]+1]=1;
    }
    vector<vector<bool>> s(n+2, vector<bool> (m+2, 1));
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
    {
        s[i][j]=(d[i][j]>0?1:0);
        int mx=0;
        for(auto &[a,b]:dir)
            mx=max(mx,d[a+i][b+j]);
        if(mx==2) s[i][j]=1;
    }
    vector<vector<bool>> vis(n+2, vector<bool> (m+2));
    queue<array<int, 2>> q;
    if(!s[1][1])
    {
        q.push({1,1});
        vis[1][1]=1;
    }
    while(!q.empty())
    {
        auto [x,y]=q.front();
        q.pop();
        for(auto &[a,b]:dir)
            if(!s[a+x][b+y] && !vis[a+x][b+y])
        {
            vis[a+x][b+y]=1;
            q.push({a+x,b+y});
        }
    }
    for(int i=0; i<N; i++)
        d[u[i]+1][v[i]+1]=0;

    return vis[n][m];
}

int main() {
    int R, C, Q;
    assert(3 == scanf("%d %d %d", &R, &C, &Q));

    std::vector<std::vector<int>> labyrinth(R, std::vector<int>(C));
    for (int i = 0; i < R; ++i) {
        for (int j = 0; j < C; ++j) {
            char c;
            assert(1 == scanf(" %c", &c));
            labyrinth[i][j] = c - '0';
        }
    }
    init_labyrinth(R, C, labyrinth);

    std::vector<int> answers(Q);
    for (int i = 0; i < Q; ++i) {
        int N;
        assert(1 == scanf("%d", &N));
        std::vector<int> U(N), V(N);
        for (int j = 0; j < N; ++j) {
            assert(2 == scanf("%d %d", &U[j], &V[j]));
        }
        answers[i] = can_escape(N, U, V);
    }

    for (int i = 0; i < Q; ++i) {
        printf("%d\n", answers[i]);
    }

    return 0;
}
Forditási hiba
open /var/local/lib/isolate/436/box/a.out: no such file or directory
/usr/bin/ld: /tmp/ccZmx59d.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccGtSeZ1.o:main.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status