社区讨论
嘿嘿嘿
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 条回复,欢迎继续交流。
正在加载回复...