1703. Obstacle Course(最短路径bfs)

来源:互联网 发布:淘宝 装修 编辑:程序博客网 时间:2024/04/30 16:22

给定经过矩阵每个cell的代价,求从0,0到n-1,n-1最小代价


#include <iostream>#include <queue>#include <cstring>using namespace std;queue<int> q;int N,ipt[200][200],dis[200][200],dx[]={-1,1,0,0},dy[]={0,0,-1,1};void bfs(){int t=0,s,x,y,nx,ny;memset(dis,-1,sizeof(dis));q.push(t);dis[0][0]=ipt[0][0];while(!q.empty()){s=q.front();x=s/N;y=s%N;for(int i=0;i<4;i++){nx=x+dx[i];ny=y+dy[i];if(nx>=0&&nx<N&&ny>=0&&ny<N){if(dis[nx][ny]==-1||dis[x][y]+ipt[nx][ny]<dis[nx][ny]){dis[nx][ny]=dis[x][y]+ipt[nx][ny];t=nx*N+ny;q.push(t);}}}q.pop();}}int main(){int count=1;;while(cin>>N&&N){for(int i=0;i<N;i++)for(int j=0;j<N;j++)cin>>ipt[i][j];bfs();cout<<"Problem "<<count<<": "<<dis[N-1][N-1]<<endl;count++;}//return 0;}


原创粉丝点击