博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 796D Police Stations
阅读量:5915 次
发布时间:2019-06-19

本文共 1250 字,大约阅读时间需要 4 分钟。

题目链接:

题意:有n个城市,坐标1到n,n-1条边,长度都为1。然后有k个警局,下标pi。现在要求拆掉其中的一部分边,并且还要保证所有城市到警局距离小于等于d。一开始保证所有城市到金具距离小于等于d。输出删除的路径总数,以及删除的路径的id。

分析:将k个警局求入一个queue,然后bfs,vis数组标记是否到达某一个城市,初始话为0,如果是第一次到达(vis[i]=0),那么这条路是必须的,vis[i]=1,找到所有必须路径,剩下的就是可以删除的,完全不用考虑d。

AC代码:

1 #include
2 using namespace std; 3 4 struct Node{ 5 int v; 6 int id; 7 Node(int _v,int _id){ 8 v=_v; 9 id=_id;10 }11 };12 int a[300005];13 vector
g[300005];14 int vis[300005];15 int vis2[300005];16 queue
q;17 int c[300005];18 int length[300005];19 int main() {20 ios_base::sync_with_stdio(0);21 cin.tie(0);22 int n,k,d;23 int u,v;24 memset(vis,0,sizeof(vis));25 memset(vis2,0,sizeof(vis2));26 cin>>n>>k>>d;27 for(int i=1;i<=k;i++){28 cin>>a[i];29 vis[a[i]]=1;30 q.push(a[i]);31 }32 sort(a+1,a+1+k);33 for(int i=1;i
>u>>v;35 g[u].push_back(Node(v,i));36 g[v].push_back(Node(u,i));37 }38 int result=0;39 while(!q.empty()){40 int x=q.front();41 int sz=g[x].size();42 q.pop();43 for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/ls961006/p/6926226.html

你可能感兴趣的文章
聊聊NettyConnector的start及shutdown
查看>>
解决SS4.0.8在win10无法加载 DLL“libcrypto-1_1.dll”问题
查看>>
记录一次更新Masonry的问题
查看>>
Vant 1.0 正式发布:轻量、可靠的移动端 Vue 组件库
查看>>
CDN基本工作过程
查看>>
红药丸,还是蓝药丸
查看>>
基于 HTML5 WebGL 的 3D 仓储管理系统
查看>>
hadoop集群搭建
查看>>
一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
查看>>
GoLang 变量作用域
查看>>
聊聊 DisplayObject 的x/y/regX/regY/rotation/scale/skew 属性
查看>>
JavaFX “即时搜索” 示例
查看>>
MongoDB分片+复制集
查看>>
vue 将echarts封装为组件一键使用
查看>>
Raffi Krikorian 为“在运行中进行架构重写”提供了指南
查看>>
OneAPM挂牌新三板,续写ITOM新篇章
查看>>
终极指南:如何使用Visual Studio Code进行 Java 开发?
查看>>
通过源码解析 Node.js 中一个 HTTP 请求到响应的历程
查看>>
做了一点事,学到了一些
查看>>
CodeIgniter的密码处理论
查看>>