Problema con il compilatore

Ciao, sto provando ad eseguire questo codice

#include<stdio.h>
#include<stdlib.h>

typedef struct{ unsigned visitato; unsigned int costo;}Nodo;

unsigned int vertici;
unsigned int archi;
unsigned int sorgente;
unsigned int destinazione;
unsigned int grafo[1000000][1000000];
Nodo nodi[10000];

void dijkstra(unsigned int partenza)
{
unsigned int i, temp;
for(i=0; i<vertici; i++)
{
    if(!nodi[i].visitato)
    {
        temp=nodi[partenza].costo+grafo[partenza][i];
        if(temp<nodi[i].costo)
            nodi[i].costo=temp;
        dijkstra(i);
        nodi[i].visitato=1;
    }
}
}

int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);

unsigned int i, j, t1, t2, t3;

scanf("%u", &vertici);
scanf("%u", &archi);
scanf("%u", &sorgente);
scanf("%u", &destinazione);
for(i=0; i<archi; i++)
{
    for(j=0; j<archi; j++)
    {
        grafo[i][j]=0;
    }
}
for(i=0; i<archi; i++)
{
   scanf("%u%u%u", &t1, &t2, &t3);
   grafo[t1-1][t2-1]=t3;
   grafo[t2-1][t1-1]=t3;
}
for(i=0; i<vertici; i++)
{
    nodi[i].visitato=0;
    nodi[i].costo=0;
}
nodi[sorgente].visitato=1;
dijkstra(sorgente);

printf("%u", nodi[destinazione+1].costo);
return 0;
}

Sul mio computer viene eseguito ma il correttore automatico da errore di compilazione:

dijkstra.c: In function ‘main’:
dijkstra.c:31:5: warning: ignoring return value of ‘freopen’, declared with attribute warn_unused_result [-Wunused-result]
freopen(“input.txt”, “r”, stdin);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dijkstra.c:32:5: warning: ignoring return value of ‘freopen’, declared with attribute warn_unused_result [-Wunused-result]
freopen(“output.txt”, “w”, stdout);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dijkstra.c:36:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%u", &vertici);
^~~~~~~~~~~~~~~~~~~~~
dijkstra.c:37:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%u", &archi);
^~~~~~~~~~~~~~~~~~~
dijkstra.c:38:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%u", &sorgente);
^~~~~~~~~~~~~~~~~~~~~~
dijkstra.c:39:5: warning: ignoring return value of ‘scanf’, de

Qualcuno mi sa dire dove sbaglio?

L’errore non è incluso nel log che riporti perché l’output di compilazione viene troncato.

Comunque. stai allocando una matrice grafo di 10^6 \cdot 10^6 = 10^{12} interi. Se ciascuno richiede 4 byte, quella matrice occupa 4 TeraByte di memoria :thinking: