1 条题解
-
1
#include <bits/stdc++.h> using namespace std; char mp[1005][1005]; int n,m,sx,sy,fx,fy; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; int vis[1005][1005]; long long int s[1005]; long long int maxx=-1; long long int ans; void dfs(int x,int y){ if(x==fx&&y==fy){ ans++; return; } for(int i=0;i<=3;i++){//四方向 int tx=dx[i]+x; int ty=dy[i]+y; if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&mp[tx][ty]!='#'&&vis[tx][ty]==0){ vis[tx][ty]=1; dfs(tx,ty); vis[tx][ty]=0; } } } int main(){ int k; cin>>n>>m>>k; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>mp[i][j]; if(mp[i][j]=='#'){ vis[i][j]=1; } if(mp[i][j]=='1'){ sx=i; sy=j; } } } int v; for(int i=1;i<=k;i++){ long long int aa,bb; cin>>aa>>bb; if(aa>9999){ bb*=aa/10000; } s[i]=bb; if(max(maxx,s[i])==s[i]){ v=i; } maxx=max(maxx,s[i]); } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(mp[i][j]==v+'0'){ fx=i; fy=j; break; } } } cout<<v<<endl; vis[sx][sy]=1; dfs(sx,sy); cout<<ans; return 0; }
- 1
信息
- ID
- 94
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者