Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2015-11-21 06:57:21.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:hack.in, hack.outSursăFMI No Stress 6
AutorMihai CalanceaAdăugată defmins123FMI No Stress fmins123
Timp execuţie pe test0.5 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Hack

#define PII pair<int, int>
#define VI vector<int>

const int dx[5] = {0, 0, 1, -1};
const int dy[5] = {1, -1, 0, 0};

int getDistance(vector<string> &A, PII start) {
    int n = A.size(), m = A[0].size();
    int COUNTER = 0;

    queue<PII> Q;
    vector<VI> d(n, vector<int> (m, n * m));
    d[start.first][start.second] = 0;
    Q.push(start);
    
    while(!Q.empty()) {
        PII node = Q.front();
        Q.pop();
        
        COUNTER++;

        for(int dir = 0; dir < 4; ++dir) {
            int newX = node.first + dx[dir];
            int newY = node.second + dy[dir];
            if(newX < 0 || newX >= n || newY < 0 || newY >= m)
                continue;
            int cost = 0;
            if(A[node.first][node.second] != A[newX][newY]) 
                cost = 1;
            
            if(d[node.first][node.second] + cost < d[newX][newY]) {
                d[newX][newY] = d[node.first][node.second] + cost;
                Q.push({newX, newY});
            }
        }
    }

    return COUNTER;
}

Date de intrare

Fişierul de intrare hack.in nu va conţine nimic.

Date de ieşire

În fişierul de ieşire hack.out se vor afla 4 numere pe prima linie: N, M, startX, startY, reprezentând dimensiunile matricei şi coordonatele celulei de start. startX startY vor fi indexate de la 1.

Restricţii

  • 1 ≤ N, M ≤ 50

Exemplu

hack.inhack.out
5 5 3 3
00000
01110
01010
01110
00000

Explicaţie

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?