二维数组指针使用,读取位置访问冲突

int** dk(Gralist a, int begin) {//这个时找最短路径返回结点序列
    int visited[MAX];
    int distance[MAX];
    int** in;//静态内存申请
    in = (int**)malloc(sizeof(int*) * MAX);

    for (int i = 0; i < MAX; i++) {
        in[i] = (int*)malloc(sizeof(int) * MAX);
    }
    for (int i = 0; i < MAX; i++) {
        if (i == begin)
            visited[i] = 1;
        else
            visited[i] = 0;
        distance[i] = a->matrix_o[begin][i];
        in[i][0] = begin;
        in[i][1] = i;
    }
    for (int i = 0; i < MAX; i++) {
        for (int j = 2; j < MAX; j++) {
            in[i][j] = MOST;
        }
    }




    for (int i = 0; i < MAX; i++)
    {


        //找distance 最短的结点
        int smal = 0;
        int j = 0;
        for (j = 0; j < MAX; j++)
        {
            if (visited[j] == 0)
            {
                smal = j;
                break;
            }

        }
        if (j >= MAX)
            break;

        for (int i = 0; i < MAX; i++) {

            if ((distance[smal] > distance[i]) && visited[i] != 1)
            {
                smal = i;
            }
        }

        visited[smal] = 1;

        for (int i = 0; i < MAX; i++) {

            if ((distance[i] > distance[smal] + a->matrix_o[smal][i]) && visited[i] != 1) {
                distance[i] = distance[smal] + a->matrix_o[smal][i];
                for (int j = 0, fl = 0; j < MAX; j++) {
                    in[i][j] = in[smal][j];
                    if (in[smal][j] == MOST && fl == 0)
                    {
                        in[i][j] = i;
                        fl++;
                    }
                }

            }

        }
    
    }

    return in;
}



int main() {
    into_e();
    into_v();
    Graph a;
    create_graph(&a);//前面都测试过的

    int** i = NULL;
        i=dk(&a, 0);
        if (i == NULL)
            return 0;
        printf("10%d\n", i);//这里也能打印出来
    for (int k=0; k < 2; i++)
    {
        for (int j=0; j < 2; j++)
        {
        printf("10%d\n", i);//printf("10%d\n", i[k][j])//这个读取位置访问冲突
                                 //这里不知道为什么陷入的死循环
        }
    }
    
    


    
    return 0;

}