어떤 곳을 지나갈때 1이라고 써있는곳은 에너지 1 깎으면서 도착지 까지 가는건데 이상함;;
참고로 시작은 3, 도착은 4

#include <fstream>
using namespace std;
FILE *fin=fopen(\"input.txt\", \"r\");
FILE *fout=fopen(\"output.txt\", \"w\");
int n, m, k, s1, s2, e1, e2, f, r, row, col, q[2][1000010], d[1010][1010];
int main()
{
        int i, j;
        fscanf(fin, \"%d %d\\n%d\", &m, &n, &k);
        for(i=1;i<=m;i++)
        {
                for(j=1;j<=n;j++)
                {
                        fscanf(fin, \"%d\", &d[i][j]);
                        if(d[i][j]==3) { s1=i; s2=j; }
                        if(d[i][j]==4) { e1=i; e2=j; }
                }
        }
        f=0;
        r=1;
        q[0][1]=s1;
        q[1][1]=s2;
        d[s1][s2]=k;
        d[e1][e2]=0;
        while(f<r)
        {
                row=q[0][++f];
                col=q[1][f];
                if(row==e1 && col==e2) break;
                if(row<m && d[row+1][col]==0)
                {
                        q[0][++r]=row+1;
                        q[1][r]=col;
                        if(d[row+1][col]==1)d[row+1][col]=d[row][col]-1;
                        else if(d[row+1][col]==0)d[row+1][col]=d[row][col];
                }
                if(row>1 && d[row-1][col]==0)
                {
                        q[0][++r]=row-1;
                        q[1][r]=col;
                        if(d[row-1][col]==1)d[row-1][col]=d[row][col]-1;
                        else if(d[row-1][col]==0)d[row-1][col]=d[row][col];
                }
                if(col<n && d[row][col+1]==0)
                {
                        q[0][++r]=row;
                        q[1][r]=col+1;
                        if(d[row][col+1]==1)d[row][col+1]=d[row][col]-1;
                        else if(d[row][col+1]==0)d[row][col+1]=d[row][col];
                }
                if(col>1 && d[row][col-1]==0)
                {
                        q[0][++r]=row;
                        q[1][r]=col-1;
                        if(d[row][col-1]==1)d[row][col-1]=d[row][col]-1;
                        else if(d[row][col-1]==0)d[row][col-1]=d[row][col];
                }
        }
        if(d[e1][e2])
                fprintf(fout, \"1\\n%d\", d[e1][e2]);
        else
                fprintf(fout, \"0\");
        fcloseall();
        return 0;
}

아오