[loj3176]景点划分

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 struct ji{
5 int nex,to;
6 }edge[N<<2];
7 pair<int,int>a[11];
8 int E,r,n,m,x,y,flag,head[N],sz[N],dfn[N],low[N],tot[N],ans[N];
9 void add(int x,int y){
10 edge[E].nex=head[x];
11 edge[E].to=y;
12 head[x]=E++;
13 }
14 void update(int k,int p){
15 if ((!a[p].first)||(ans[k]))return;
16 a[p].first--;
17 ans[k]=a[p].second;
18 for(int i=head[k];i!=-1;i=edge[i].nex)
19 if (edge[i].to)update(edge[i].to,p);
20 }
21 void dfs(int k,int fa){
22 int mx=0,s=0;
23 sz[k]=1;
24 dfn[k]=low[k]=++x;
25 for(int i=head[k];i!=-1;i=edge[i].nex)
26 if (!sz[edge[i].to]){
27 dfs(edge[i].to,k);
28 if (flag)return;
29 sz[k]+=sz[edge[i].to];
30 low[k]=min(low[k],low[edge[i].to]);
31 if (low[edge[i].to]<dfn[k])s+=sz[edge[i].to];
32 }
33 else{
34 if (edge[i].to!=fa)low[k]=min(low[k],dfn[edge[i].to]);
35 edge[i].to=0;
36 }
37 if ((mx<a[1].first)&&(sz[k]>=a[1].first)){
38 flag=2;
39 if (n-sz[k]+s<a[1].first){
40 flag=1;
41 return;
42 }
43 if (n-sz[k]+s<a[2].first)swap(a[1],a[2]);
44 ans[k]=a[1].second;
45 a[1].first--;
46 for(int i=head[k];i!=-1;i=edge[i].nex)
47 if ((edge[i].to)&&(low[edge[i].to]>=dfn[k]))update(edge[i].to,1);
48 for(int i=head[k];i!=-1;i=edge[i].nex)
49 if ((edge[i].to)&&(low[edge[i].to]<dfn[k]))update(edge[i].to,1);
50 update(r,2);
51 for(int i=1;i<=n;i++)
52 if (!ans[i])ans[i]=a[3].second;
53 }
54 }
55 int main(){
56 srand(time(0));
57 scanf("%d%d",&n,&m);
58 r=rand()%n+1;
59 for(int i=1;i<=3;i++){
60 scanf("%d",&a[i].first);
61 a[i].second=i;
62 }
63 sort(a+1,a+4);
64 memset(head,-1,sizeof(head));
65 for(int i=1;i<=m;i++){
66 scanf("%d%d",&x,&y);
67 add(x+1,y+1);
68 add(y+1,x+1);
69 }
70 dfs(r,0);
71 for(int i=1;i<=n;i++)printf("%d ",ans[i]);
72 }
[loj3176]景点划分的更多相关文章
- <题解>[IOI2019]景点划分
题目传送门(luogu) 题目传送门(loj) 这个题对我来说可以算是超出了我的能力范围 被学长拿来教我做构造,构造题真简单,构造题真是人,构造题真能手切... 首先对于本题,必须要知道dfs树这东西 ...
- world.construct(me);
目录 0 引言 0.1 所谓构造题 0.2 重点是动机 (motivation) 1 实践出真知 1.1 「CSP-S 2021」「洛谷 P7915」回文 1.1.1 题目大意 1.1.2 解题过程 ...
- [LeetCode] Partition List 划分链表
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- SWMM模型子汇水区划分的几种方法
子汇水区的划分是SWMM模型建模的主要步骤之一,划分的好坏对结果精度有比较大的影响.概括来讲,子汇水区的划分有以下几种思路: (1)根据管网走向.建筑物和街道分布,直接人工划分子汇水区.这个方法适用于 ...
- 等价类划分方法的应用(jsp)
[问题描述] 在三个文本框中输入字符串,要求均为1到6个英文字符或数字,按submit提交. [划分等价类] 条件1: 字符合法; 条件2: 输入1长度合法; 条件3: 输入2长度合法: 条件4: 输 ...
- Java上等价类划分测试的实现
利用JavaFx实现对有效等价类和无效等价类的划分: 代码: import javafx.application.Application;import javafx.event.ActionEvent ...
- ENode框架Conference案例分析系列之 - 上下文划分和领域建模
前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的 ...
- Cesium原理篇:2最长的一帧之网格划分
上一篇我们从宏观上介绍了Cesium的渲染过程,本章延续上一章的内容,详细介绍一下Cesium网格划分的一些细节,包括如下几个方面: 流程 Tile四叉树的构建 LOD 流程 首先,通过上篇的类关系描 ...
- 两种交换机配置模式,以配置基于端口划分的VLAN为例
关于交换机的配置模式,大体上可以分为两类:其一以CISCO交换机为代表的配置模式,其二以Huawei.H3C交换机为代表的配置模式.其实这两种配置模式并没有本质的不同,只是配置的命令名称和配置方式存在 ...
随机推荐
- ORM框架查询数据库时返回指定的字段
django model.objects.filter() 查询指定字段 1.model.objects.filter().values('field_name'),单个字段 2.model.obje ...
- pycharm输入代码后,没有补全提示
安装pycharm后,输入代码后,没有补全提示 首先检查是否关闭了代码提示,如下图,将红框中"Power Save Mode"前的勾去掉 第二步,如果在输入某些代码时还是没有补全提 ...
- 路由器的不同接口对WANsim的影响
随着网络的快速发展,移动设备已经成为我们日常生活中不可或缺的一部分.人们习惯用手机看新闻.看视频.点外卖.打车.购物等等. 同时,广域网也为移动通讯带来了挑战.以视频流来举例,从用户终端到达服务器,这 ...
- vue3双向数据绑定原理_demo
<!DOCTYPE html> <head> <meta charset="UTF-8" /> <meta name="view ...
- javascript-jquery的ajax
用一个例子来说明: html部分 <form action="name1"> <input class="class1" type=&quo ...
- python flask1
以这个服务端代码为例,简单了解一下flask的运用. 1.app = Flask(__name__)记住就好了 2.@app.route("/")记住就好了:注意括号里的是调用这个 ...
- 改善深层神经网络-week1编程题(Regularization)
Regularization Deep Learning models have so much flexibility and capacity that overfitting can be a ...
- [对对子队]会议记录4.20(Scrum Meeting11)
今天已完成的工作 何瑞 工作内容:搭建第三关,添加了运行指令标识 相关issue:搭建关卡2.3 相关签入:4.20签入1 4.20签入2 吴昭邦 工作内容:搭建第三关 相关iss ...
- BUAA 2020 软件工程 热身作业
BUAA 2020 软件工程 热身作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! ...
- 软件案例分析——VS、VS Code
软件案例分析--VS和VS Code 第一部分 调研,测评 一.使用10–30分钟这个软件的基本功能(请上传使用软件的照片) VS code Visual Studio 二.主要功能和目标用户有何不同 ...