E mi sembra ovvio:

Appena entra nel ciclo while succede questo:

codice:
        if(i==0)
        {
            a[m][i]=1;
        }
        else
        {
            break;
        }
        if(m==0&&i>=1)
        {
            a[m][i]=0;
        }
        else
        {
            break;
        }
Il primo test (i == 0) è vero. Viene eseguita l'assegnazione.
Il secondo test è falso, perchè i non è >= 1 (è ancora uguale a 0). Quindi esegue il break.


Ciao.