CCF_ 201403-4_无线网络
2024-09-06 18:33:31
分散点的bfs,先建立一个互相是否可达的二维数组,vis[i][j]代表到第i个点,走了j步的状态,注意判断新增路由器数量是否超过K。
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std; struct point{
long long x,y,num,counts,sets;
}a[]; int cango[][] = {},vis[][] = {}; int main()
{
int n,m,k;
long long r;
cin >> n >> m >> k >> r;
for(int i = ;i <= m+n;i++)
{
cin >> a[i].x >> a[i].y;
a[i].num = i;
}
for(int i = ;i < m+n;i++)
{
for(int j = i;j <= m+n;j++)
{
if((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y) <= r*r)
{
cango[i][j] = cango[j][i] = ;
}
}
}
a[].counts = ;
a[].sets = ;
vis[][] = ;
queue<point> q;
q.push(a[]);
while(!q.empty())
{
long long num = q.front().num,counts = q.front().counts;
q.pop();
if(num == )
{
cout << counts- << endl;
return ;
}
for(int i = ;i <= m+n;i++)
{
long long sets;
if(i > n) sets = q.front().sets+;
else sets = q.front().sets;
if(cango[num][i] && !vis[i][counts+] && sets <= k)
{
a[i].sets = sets;
a[i].counts = counts+;
q.push(a[i]);
vis[i][counts+] = ;
}
}
}
}
最新文章
- Express 4 中如何使用connect-mongo
- php文件以二进制形式上传并放入到数据库中
- java中+的使用
- 3月22日 html(三)css样式表
- 前自加(++a)与后自加(a++)的差别
- 消息函数一般是私有的,因为不需要程序员显示的调用,但子类如果需要改写这个方法,则改成保护方法Protected
- async和await用法
- Android makefile 组织结构
- 小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口
- macOS下python3通过scrapy框架重新生成不得姐网站视频采集过程日志
- zabbix 配置维护
- 奇怪吸引子---Halvorsen
- Spring 学习——Spring常用注解——@Component、@Scope、@Repository、@Service、@Controller、@Required、@Autowired、@Qualifier、@Configuration、@ImportResource、@Value
- Linux下生成随机密码(转)
- loadicon后一定要调用destroyicon吗
- PYTHON 常用API ***
- 初始设置ubuntu 16.04 Vps部署rails
- vue-cli配置axios,并基于axios进行后台请求函数封装
- Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
- ARX添加新的图形对象到当前数据库空间ObjectARX PostCurrentSpace