1 条题解
-
0
C++ :
#include <stdio.h> #include <string.h> #include <algorithm> #include <queue> using namespace std; struct node{ int x,y,t; }; bool operator < (node i,node j){ return i.t>j.t; } priority_queue<node>q; bool vis[12][12]; int map[12][12]; int n,m,ans; int dx[]={0,1,0,-1}; int dy[]={-1,0,1,0}; inline void bfs(int x,int y){ node vw,vn; while(!q.empty()) q.pop(); vn.x=x,vn.y=y,vn.t=0; if(map[x][y]==1) vn.t++; q.push(vn); memset(vis,0,sizeof(vis)); vis[x][y]=1; while(!q.empty()){ vn=q.top(),q.pop(); if(vn.x==n){ ans=min(ans,vn.t); } if(vn.t>=ans){ return; } for(int i=0;i<4;i++){ int a=vn.x+dx[i]; int b=vn.y+dy[i]; if(a>=1&&a<=n&&b>=1&&b<=m&&!vis[a][b]){ vw.x=a,vw.y=b,vw.t=vn.t; vis[a][b]=1; if(map[a][b]==1) vw.t++; q.push(vw); } } } } int main(){ while(~scanf("%d%d",&n,&m)){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&map[i][j]); } } ans=10000; for(int i=1;i<=m;i++){ bfs(1,i); } printf("%d\n",ans); } return 0; }
- 1
信息
- ID
- 1920
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者