jzoj5875
這玩意嚴格意義上算是水法(因為可能會被卡)
題目中,如果按照一般的bfs來搜索,那麼有平方級邊,會tle
如果按照補邊的線性來搜索,那麼時間複雜度變為min(k*k,m)*n,視n,m同階,則時間複雜度為nsqrt(n)
接下來需要設計一個和補邊數相關的算法
維護3個隊列,q1,q2,q3。q1代表待擴展節點列表,q2代表已經擴展節點列表,q3代表不能擴展節點列表
每次從q1中取出一個u,然後放進q2,然後聯通塊數目+1
再當q2非空時,從中取出一個v,嘗試用v擴展所有q1中的節點。當其與q1中的當前節點沒有邊,則將其放入q3,否則放入q2
最後,將q3所有節點放入q1
用哈希判斷邊是否存在
有可能會被卡,但是出題人顯然沒有卡
代碼:
#include<bits/stdc++.h>
using namespace std;
#define jzm 1000007
#pragma GCC optimize("O3")
int n,m,q;
set<int>s[100010];
int main(){
//freopen("connect.in","r",stdin);
//freopen("connect.out","w",stdout);
scanf("%d%d%d",&n,&m,&q);
while(m--){
int x,y;
scanf("%d%d",&x,&y);
s[x].insert(y);
s[y].insert(x);
}
while(q--){
int t,x,ct=0;
scanf("%d",&t);
queue<int>q1,q2,q3;
for(int i=1;i<=t;i++){
scanf("%d",&x);
q1.push(x);
}
while(!q1.empty()){
int x=q1.front();q1.pop();
ct++;q2.push(x);
while(!q2.empty()){
int z=q2.front();q2.pop();
while(!q1.empty()){
int y=q1.front();q1.pop();
if(s[z].count(y))q3.push(y);
else q2.push(y);
}
while(!q3.empty()){
int y=q3.front();q3.pop();
q1.push(y);
}
}
}
printf("%d\n",ct);
}
}
jzoj5875的更多相关文章
随机推荐
- oracle的分析函数over(Partition by...) 及开窗函数
over(Partition by...) 一个超级牛皮的ORACLE特有函数. oracle的分析函数over 及开窗函数一:分析函数overOracle从8.1.6开始提供分析函数,分析函 ...
- PAT 1052 卖个萌 (20)(代码+思路)
1052 卖个萌 (20)(20 分) 萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格 ...
- JavaScript 的数据类型及其检测
JavaScript 有几种类型的值? Javascript 有两种数据类型,分别是基本数据类型和引用数据类型.其中基本数据类型包括 Undefined.Null.Boolean.Number.Str ...
- cocos2d接安卓facebook插件(已测cocos-x 3.7 3.8版本)
1 控制台创建新工程: a 控制台 进入cocos2d文件夹下面,如cocos2d-x-3.7.1,执行setup.py,未设置NDK SDK ANT 路径的设置路径,需要改路径的 explore ...
- 2018.09.10 bzoj1499: [NOI2005]瑰丽华尔兹(单调队列优化dp)
传送门 单调队列优化dp好题. 这题其实很简单. 我们很容易想到一个O(T∗n∗m)" role="presentation" style="position: ...
- 2018.08.18 NOIP模拟 snow(最大流)
Snow 题目背景 SOURCE:NOIP2015-SHY4 题目描述 有一天,TT 要去 ABC 家.ABC 的大门外有 n 个站台,用 1 到 n 的正整数编号,TT 需要对每个站台访问恰好一定次 ...
- IoC的基本概念
一.什么是IOC ioc是一个英文缩写,英文全称是 Inversion of Control,翻译过来是“控制反转”.理解好Ioc的关键是要明确“谁控制谁,控制了什么,为何是反转,哪些方面反转了” 谁 ...
- TabHost实现通话记录界面
//MainActivity.java public class MainActivity extends TabActivity { @Override public ...
- spring mvc 文档哪里有
官方: http://docs.spring.io/spring/docs/4.2.0.RC1/spring-framework-reference/htmlsingle/#spring-web Th ...
- C语言printf的格式
例1 int a = 12345;printf("%6d",a); // 输出6位不够左边补空格printf("%.6d",a); // 输出6位不够左边补0例 ...