社区讨论

嘿嘿嘿

P1332血色先锋队参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mi6uskvb
此快照首次捕获于
2025/11/20 11:10
4 个月前
此快照最后确认于
2025/11/20 11:10
4 个月前
查看原帖
其实不需要DFS,只要一个个求距离在求最小就好了
CPP
#include<bits/stdc++.h>
using namespace std;
struct soi//Source of infection(感染源)的缩写 
{
	int x;
	int y;
}source[250001];
struct leader
{
	int x;
	int y;
	int mn=2147483647;
}lead[250001];
int dis(int x1,int y1,int x2,int y2)
{
	return abs(x1-x2)+abs(y1-y2);
}
//求距离函数
int main(){
	//int m,n;
    //为防被和谐加上的注释
    //把定义那行的注释去掉
	cin>>m>>n;
	int a,b;
	cin>>a>>b;
	for(int i=1;i<=a;i++)
	{
		cin>>source[i].x>>source[i].y;
	}
	int min=2147483647;
	for(int i=1;i<=b;i++)
	{
		cin>>lead[i].x>>lead[i].y;
		for(int j=1;j<=a;j++)
		{
			if (dis(lead[i].x,lead[i].y,source[j].x,source[j].y)<min)
			{
				min=dis(lead[i].x,lead[i].y,source[j].x,source[j].y);
			}
		}
		lead[i].mn=min;
		min=2147483647;
	}
	/*for(int i=1;i<=b;i++)
	{
		cout<<lead[i].mn<<endl;
	}*/
    //把上面这段注释去掉就能AC
	exit(0);
}

回复

3 条回复,欢迎继续交流。

正在加载回复...