Attenti all'incendio

Salve,
sto cercando di risolvere Attenti all’incendio, con una soluzione che dovrebbe (secondo me) funzionare per tutti i casi con N<=10000.

In realtà arrivo a 49/100 perché non funziona con tutti i casi dei task con N<=2000 e N<=10000.
Mi viene però il dubbio che i limiti indicati per i task siano errati.

In particolare, col programma che ho scritto (alloco memoria staticamente per N=10 000) ottengo errore per violazione della memoria in diversi casi dei subtask che hanno N<2000 e N<10000.
Inserendo un controllo all’inizio che restituisce come risultato 0 (errato) se N è maggiore di 10000 questi casi diventano Output errato. Ciò indica che in questi casi è vero che N è maggiore di 10000, contrariamente a quanto indicato nel testo, altrimenti per questi casi l’esito dovrebbe essere quello che avevo prima di inserire tale controllo.

Mi sfugge qualcosa?

Nei subtask è M ad essere minore di 2000 e 10000

4 Mi Piace

oops, grazie! :grin:

A proposito del problema Attenti all’incendio, se devo usare una DFS con una list ma nel grader non è prevista la direttiva include con la relativa libreria come faccio? devo implementarla con un array? Grazie

Puoi aggiungerla senza problemi.

1 Mi Piace

Grazie, pensavo ci si dovesse attenere rigidamente al contenuto del grader allegato.

Approfitto della tua disponibilità e competenza per capire la segnalazione di errore “Execution killed with signal 11 (could be triggered by violating memory limits)”. Non mi sembra abbia dichiarato chissà quanta memoria. Ho fatto la prova del primo testcase della traccia impostando la dimensione max delle strutture a 10… Grazie.incendio.zip (1,6 KB)

Accedi a della memoria non allocata.
Come per esempio fai qui: citta[X[i]][Y[i]]=0; i valori di X[i] e Y[i] sono maggiori della dimensione della matrice.

Help me!
Nonostante abbia sistemato il codice e testato positivamente in locale anche con N grande
resto intrappolato nel “Execution killed with signal 11 (could be triggered by violating memory limits)” su tutti i subtask. Con delle prove ho capito che il problema è nella DFS ma non vedo nulla di strano.
Ringrazio anticipatamente.

Il problema sta nel fatto che non puoi memorizzare in una matrice NxN se in una determinata cella c’è un incendio o meno, in quanto, se tu dichiari la matrice in modo che stia nei limiti di memoria allora accederai a memoria non allocata, se dichiari la matrice della dimensione “corretta” allora sfori i limiti di memoria.
Per risolvere il problema devi dunque evitare di rappresentare effettivamente la mappa completa.

Pardon, non avevo allegato codice.
incendio__.zip (1,9 KB)

Non puoi rappresentare la mappa in una matrice, per i motivi che ti ho detto prima.