请问大这个地图求最短路径代码是哪里有问题,为什么没有输出呢?

img

img


#include 
using namespace std;
char n, m;
char map[200][200]; int kfc[100][2]; int Y[2], M[2];
int ytime[100], mtime[100];
int  sum[100],t;//summin表示去所有kfc两人最短时间,sum表示去一个kfc的最短时间
int visit[200][200];
void judge(int x1, int y1, int x0, int y0,int time) {
    visit[x1][y1] = 1;
    if (x1 == x0 && y1 == y0) {
        sum[t] = time;
        t++;
    }
    int x_incre[4] = { 0,1,0,-1 }, y_incre[4] = { 1,0,-1,0 };
    int i, j, k;
    for (int k = 0; k < 4; k++) {
        i = x1 + x_incre[k]; j = y1 + y_incre[k];
        if (i >= 0 && j >= 0 && i < n && j < m && map[i][j] != '#' && visit[i][j] != 1)
            judge(i, j, x0, y0, time++);
    }

}
int main()
{
    int kfcnum;
    while (cin >> n >> m)
    {
         kfcnum = 0;
         for (int i = 0; i < n; i++)//准备阶段输入地图
         {
             for (int j = 0; j < m; j++) {
                 cin >> map[i][j];
                 if (map[i][j] == '@') {
                     kfc[kfcnum][0] = i;
                     kfc[kfcnum][1] = j;//标记kfc位置
                     kfcnum++;
                 }
                 if (map[i][j] == 'Y') {
                     Y[0] = i; Y[1] = j;//标记yifenfei位置
                 }
                 if (map[i][j] == 'M') {
                     M[0] = i; M[1] = j;//标记Merceki位置
                 }
             }
         }
            for (int i = 0; i < kfcnum; i++) {
                t = 0;
                for (int i = 0; i < n; i++)
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                        visit[i][j] = 0;
                }//将每次到达的位置清空
                judge(Y[0], Y[1], kfc[i][0], kfc[i][1], 0);
                ytime[i] = sum[0];//判断y到kfc[i]的最短时间
                for (int j = 0; j < t; j++)
                    if (sum[j] < ytime[i])
                        ytime[i] = sum[t];
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                       
        visit[i][j] = 0;
                }
                t = 0;
                judge(M[0], M[1], kfc[i][0], kfc[i][1], 0);
                mtime[i] = sum[0]; //判断m到kfc[i]的最短时间
                for (int j = 0; j < t; j++)
                    if (sum[j] < mtime[i])
                        mtime[i] = sum[t];
            }
            int mintime = ytime[0] + mtime[0];//求出到所有kfc中的最短时间之和的最小值
            for (int i = 1; i < kfcnum; i++)
                if ((ytime[i] + mtime[i]) < mintime)
                    mintime = ytime[i] + mtime[i];
            mintime = mintime * 11;
            cout << mintime << endl;
    }
}

错误太多了
for (int i = 0; i < n; i++)
for (int i = 0; i < n; i++)
这里一样的循环条件重复2次???