蒟蒻求改

回复帖子

@冷梦233 2019-05-24 20:29 回复

大佬帮帮```

include<bits/stdc++.h>

using namespace std; int n,m,s[1001][1001]; int a[1001][1001]; struct pos{int x,y,c,sum;}; int xx[4]={-1,0,1,0},yy[4]={0,-1,0,1}; void bfs(int x,int y,int c,int sum){ queue<pos> rj;//这是bfs,要申请队列 rj.push(pos{x,y,c,sum}); s[x][y]=0; while(rj.size()>0){ x=rj.front().x;y=rj.front().y;c=rj.front().c;sum=rj.front().sum;rj.pop(); for(int i=0;i<4;i++){ int sx=x+xx[i],sy=y+yy[i],sc=a[sx][sy]; if(sx<1||sx>n||sy<1||sy>n)continue; if(a[x][y]==0&&a[sx][sy]==0)continue; if(s[sx][sy]<=sum)continue; if(sc==c){s[sx][sy]=sum;rj.push(pos{sx,sy,c,s[sx][sy]});continue;} if(a[sx][sy]>0){s[sx][sy]=sum+1;rj.push(pos{sx,sy,c,s[sx][sy]});continue;} if(s[sx][sy]<=s[x][y]+2)continue; if(a[sx][sy]==0)sum+2;rj.push(pos{sx,sy,c,s[sx][sy]});} } } int main(){ cin>>n>>m; while(m--){ int x,y,c; cin>>x>>y>>c; a[x][y]=c+1; } memset(s,63,sizeof(s)); bfs(1,1,a[1][1],0); if(s[n][n]>1e9)cout<<-1<<endl; else cout<<s[n][n]<<endl; return 0; }

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。