
Codeforces Round #408 (Div. 2) D. Police Stations(最小生成树+构造)
发布日期:2021-05-09 01:10:57
浏览次数:23
分类:原创文章
本文共 1923 字,大约阅读时间需要 6 分钟。
题意
n个点有n-1条边相连,其中有k个特殊点,要求:
删去尽可能多的边使得剩余的点距特殊点的距离不超过d
输出删去的边数和index
分析
比赛的时候想不清楚,看了别人的题解
一道将1个联通块转化为k个树的题目,考虑上界,应该是k-1条边,这k-1条边是原图中连接树与树的边,那么我们操作如下:
1.将特殊点i染色为i,放入队列
2.做一次bfs,对每个点相邻的点染色并判断
3.遍历边,如果边的两点不同色,则输出边的index
trick
代码
#include <cstdio>#include <cstring>#include <cstdlib>#include <ctime>#include <cmath>#include <iostream>#include <algorithm>#include <string>#include <set>#include <map>#include <queue>#include <stack>#include <vector>#include <bitset>using namespace std;#define ll long long#define F(i,a,b) for(int i=a;i<=b;++i)#define R(i,a,b) for(int i=a;i<b;++i)#define mem(a,b) memset(a,b,sizeof(a))#define cpy(a,b) memcpy(a,b,sizeof(b))#pragma comment(linker, "/STACK:102400000,102400000")inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}}int n,k,d,u,v;vector<int>vec[300300];vector<pair<int,int> >edg;int f[300300],color[300300],dis[300300];int cnt;queue<int>q;void bfs(){ while(!q.empty()) { int u=q.front();q.pop(); if(dis[u]==d) continue; R(i,0,vec[u].size()) { int v=vec[u][i]; if(!color[v]) { color[v]=color[u]; dis[v]=dis[u]+1; q.push(v); } } }}int main(){ scanf("%d %d %d",&n,&k,&d); F(i,1,k) { int x; scanf("%d",&x); f[x]=1; } F(i,1,n-1) { scanf("%d %d",&u,&v); edg.push_back(make_pair(u,v)); vec[u].push_back(v); vec[v].push_back(u); } cnt=0; F(i,1,n)if(f[i]) { q.push(i); color[i]=i; cnt++; } bfs(); printf("%d\n",cnt-1); int now=0; //F(i,1,n) printf("color[%d]=%d\n",i,color[i]); R(i,0,n-1) { int u=edg[i].first,v=edg[i].second; if(color[u]!=color[v]) { ++now; printf("%d%c",i+1,(now==(k-1))?'\n':' '); } } return 0;}
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月26日 19时40分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux 配置 skywalking
2025-04-07
Linux--进程状态
2025-04-07
Linux-服务器远程控制
2025-04-07
Linux/CentOS设置全局代理(http)
2025-04-07
Linux——gcc编译器
2025-04-07
Linux——静态库
2025-04-07
Linux下tar bz gz等压缩包的压缩和解压【转自www.bitsCN.com】
2025-04-07
Linux下安装或升级Python 2.7
2025-04-07
Linux下的硬件管理与设备驱动全解析
2025-04-08
Linux下的系统监控与性能调优:从入门到精通
2025-04-08
Linux学习总结(26)——Shell常用命令总结
2025-04-08
Linux安装JDK 17
2025-04-09
Linux安装JMeter进行压力测试
2025-04-09
Linux安装mysql:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql
2025-04-09
Linux安装Tomcat
2025-04-09
linux审计功能及规则 (audit.rule)
2025-04-09
Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式
2025-04-09
Linux工作笔记023---Centos7 查看系统安装了什么软件_多少软件
2025-04-09
Linux工作笔记024---Centos7 下查看本机公网IP
2025-04-09
Linux工作笔记040---Centos8.2安装mysql5.7.18_已经测试成功
2025-04-09