4 条题解

  • 0
    @ 2026-9-13 16:37:43
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    #define lowbit(x) x&-x
    const int INF = 0x3f3f3f3f3f3f3f3f;
    const int N = 1e3 + 10;
    const int M = 1e6 + 10;
    const int K = 6;
    const int mod = 1e9 + 7;
    int n,m,k;
    int x1,x2,yy1,yy2;
    vector<pair<int,int>>g[N];
    int a[N][N];
    int dis[N][N][K];
    bool vis[N][N][K];
    int getid(int x,int y){
    	return (x-1)*m+y;
    }
    int movex[4]={1,-1,0,0};
    int movey[4]={0,0,1,-1};
    struct node{
    	int x,y,k,res;
    };
    struct cmp{
    	bool operator()(node u,node v){
    		return u.res>v.res;
    	}
    };
    queue<node>q;
    int ans=INF;
    bool f[N][K];
    signed main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	 freopen("wormhole.in","r",stdin);
    	 freopen("wormhole.out","w",stdout);
    	cin>>n>>m>>k;
    	cin>>x1>>yy1>>x2>>yy2;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>a[i][j];
    			g[a[i][j]].push_back({i,j});
    		}
    	}
    	memset(dis,0x3f,sizeof(dis));
    	dis[x1][yy1][k]=0;
    	q.push({x1,yy1,k,0});
    	while(!q.empty()){
    		int x=q.front().x;
    		int y=q.front().y;
    		int k=q.front().k;
    		q.pop();
    		if(vis[x][y][k])	continue;
    		vis[x][y][k]=1;
    		for(int l=0;l<4;l++){
    			int nx=x+movex[l];
    			int ny=y+movey[l];
    			if(nx<1|ny<1||nx>n||ny>m)	continue;
    			if(dis[nx][ny][k]>dis[x][y][k]+1){
    				dis[nx][ny][k]=dis[x][y][k]+1;
    				q.push({nx,ny,k,dis[nx][ny][k]});
    			}
    		}
    		if(k==0)	continue;
    		if(f[a[x][y]][k])	continue;
    		f[a[x][y]][k]=1;
    		for(auto [nx,ny]:g[a[x][y]]){
    			if(dis[nx][ny][k-1]>dis[x][y][k]){
    				dis[nx][ny][k-1]=dis[x][y][k];
    				q.push({nx,ny,k-1,dis[nx][ny][k-1]});
    			}
    		}
    	}
    	for(int i=0;i<=k;i++){
    		ans=min(ans,dis[x2][yy2][i]);
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 0
      @ 2026-9-13 15:56:25

      你们好

      • 0
        @ 2026-9-13 15:55:57

        qp

        • 0
          @ 2026-9-13 15:55:33

          q

          • 1

          信息

          ID
          3724
          时间
          1000ms
          内存
          512MiB
          难度
          未评定
          标签
          递交数
          24
          通过
          5
          上传者