1 条题解

  • 1
    @ 2025-2-9 16:54:54
    #include <bits/stdc++.h>
    using namespace std;
    int mp[1005][1005];
    int n,m,sx,sy,fx,fy,k,dq,dw,tq,tw,ww,c;
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    int vis[15][15];
    int maxx=-1;
    int minn=1000005;
    
    void dfs(int x,int y,int len){
    	if(x==fx&&y==fy){
    		c++;
    		maxx=max(maxx,len);
    		minn=min(minn,len);
    		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]!=1&&vis[tx][ty]==0&&ww>mp[tx][ty]){
    			vis[tx][ty]=1;
    			dfs(tx,ty,len+1);
    			vis[tx][ty]=0;
    		}
    	}	
    }
    
    int main(){
    	int xx,yy;
    	cin>>n>>m>>k>>fx>>fy;
    	cin>>dq>>dw>>tq>>tw>>ww;
    	for(int i=1;i<=dq;i++){
    		cin>>xx>>yy;
    		mp[xx][yy]=dw;
    	}
    	for(int i=1;i<=tq;i++){
    		cin>>xx>>yy;
    		mp[xx][yy]=tw;
    	}
    	cin>>xx>>yy;
    	sx=xx;
    	sy=yy;
    	for(int i=1;i<=k;i++){
    		cin>>xx>>yy;
    		mp[xx][yy]=1; 
    	}
    	vis[sx][sy]=1;
    	dfs(sx,sy,0);
    	if(c==0){
    		cout<<"0 0 0";
    		return 0;
    	}
    	cout<<c<<" "<<minn<<" "<<maxx;
    	return 0;
    }
    
    • 1

    信息

    ID
    103
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    4
    已通过
    1
    上传者