40分求助,#4到#9都没过
  • 板块P2083 找人
  • 楼主chenyifan1
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/17 13:36
  • 上次更新2024/10/17 17:33:41
查看原帖
40分求助,#4到#9都没过
1492410
chenyifan1楼主2024/10/17 13:36
#include<bits/stdc++.h>
using namespace std;
struct node{
	int x,y;
}home[1001][101];
int n,m;
node FL(int x,int y,int st){
	node a;
	a.x =0,a.y =0;
	int nd=0;
	for (int i=1;i<=n;i++){
		for (int j=1;j<=m;j++){
			if(home[i][j].x ==x&&home[i][j].y ==y) nd++;
			if(i==x&&j==y){
				nd--; 
				continue;
			}
			if(nd==st) {
				a.x =i,a.y =j;
				return a;
			}
		}
	}
	a.x =-1;
	return a;
}
int dfs(int x,int y){
	int nd=1,ans=1e8,ans1=0;
	node a;
	if(x==1) return 0;
	while (1){
		a=FL(x,y,nd);
		if(a.x==-1){
			break;
		}
		ans1=abs(x-a.x )+dfs(a.x ,a.y );
		ans=min(ans,ans1);
		nd++;
	}
	return ans;
}
int main(){
	int v,x,y,ans=1e8;
	cin>>n>>m>>v>>x>>y;
	for (int i=1;i<=n;i++){
		for (int j=1;j<=m;j++){
			cin>>home[i][j].x >>home[i][j].y ;
		}
	}
	ans=dfs(x,y);
	if(ans>=1e8) cout<<"impossible";
	else cout<<v*ans;
	return 0;
}
2024/10/17 13:36
加载中...