为何MLE
查看原帖
为何MLE
757092
bj12z_wangziqian楼主2022/12/22 23:01
#include <bits/stdc++.h>
using namespace std;
long long mapp[10001][10001];long long ret,f[10001][10001],dx[4] = {1,0,-1,0},dy[4] = {0,1,0,-1},m,n;
struct point
{
    int x,y,coin,color;
    bool magic;
};
queue <point> q;
void bfs()
{
    point item;
    item.x = 1;
    item.y = 1;
    item.coin = 0;
    item.magic = true;
    item.color = -1;
    q.push(item);
    f[1][1] = 0;
    while(q.empty() == false){
        if(q.front().x == m&&q.front().y == m)
        {
            ret = min(ret,q.front().coin);
            q.pop();
            continue;
        }
        for(int i = 0;i<4;i++){
            int x = q.front().x+dx[i],y = q.front().y+dy[i];
            item.x = x;
            item.y = y;
            if(x>=1&&x<=m&&y>=1&&y<=m){
                if(mapp[x][y]!=-1){
                    if(mapp[x][y] == mapp[q.front().x][q.front().y]||mapp[x][y] == q.front().color) item.coin = q.front().coin;
                    else item.coin = q.front().coin+1;
                    if(item.coin<f[x][y])
                    {
                        item.magic = true;
                        item.color = -1;
                        q.push(item);
                        f[x][y] = item.coin;
                    }
                }
                else{
                    if(q.front().magic){
                        item.magic = false;
                        item.color = mapp[q.front().x][q.front().y];
                        item.coin = q.front().coin+2;
                        if(item.coin<f[x][y])
                        {
                            q.push(item);
                            f[x][y] = item.coin;
                        }
                    }
                }
            }
        }q.pop();
    }
}
int main()
{
    cin >> m >> n;
    memset(mapp,-1,sizeof(mapp));
    memset(f,0x3f,sizeof(f));
    int a,b,c;
    for(int i = 1;i<=n;i++)
    {
        cin >> a >> b >> c;
        mapp[a][b] = c;
    }
    bfs();
    if(f[m][m] == 0x3f3f3f3f) cout << -1;
    else cout << f[m][m];
    return 0;
}

恳求大佬救救蒟蒻QWQ

2022/12/22 23:01
加载中...