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的更多相关文章
随机推荐
- Golang之waitgroup用法
我敲下一堆代码,终于长出了果实,今天是个伟大日子 package main import ( "fmt" "sync" "time" ) / ...
- MEME(Motif-based sequence analysis tools)使用说明
MEME(Motif-based sequence analysis tools)使用说明 2011-05-27 ~ ADMIN MEME是用于从一堆序列中搜索功能结构域的工具.比如说当你拿到了许多C ...
- [Jenkins] 在Jenkins执行单个test suite
cd %WORKSPACE%cmd /c call "%READYAPI_PRO_190%\bin\testrunner.bat" -a -j -s"%TestSuite ...
- eclipse 远程调试mapreduce
使用环境:centos6.5+eclipse(4.4.2)+hadoop2.7.0 1.下载eclipse hadoop 插件 hadoop-eclipse-plugin-2.7.0.jar 粘贴到 ...
- RNA分析要点
1. 有参与无参转录组分析 2. lncRNA分析 以RNA-Seq测序技术为基础的转录组测序作为高通量测序时代核心技术之一,已在生物科学及医学领域前沿研究中获得广泛应用.RNA-Seq可进行全基因组 ...
- 基于beego orm 针对oracle定制
目前golang的ORM对oracle支持都没有mysql那样完整,一个orm要同时兼容mysql和oracle由于在sql语法上区别,会使整orm变的非常臃肿. 本项目是在beego orm上修改, ...
- IntellJ IDEA javax.servlet.ServletException 找不到javax.servlet.ServletException的类 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
误状态:错误显示 解决: (1)说明缺少包---->添加如下包配置 <dependency> <groupId>javax.servlet.jsp</groupId ...
- ubuntu编译centos7部署大象医生 dr-elephant
github下载源码 ubuntu上安装play,配置好环境变量 暂时不支持基于spark2.x的编译,所以compile.conf中spark版本不变 调用build.sh开始编译 编译好后dist ...
- HDU 2136 Largest prime factor (素数打表。。。)
题意:给你一个数,让你求它的最大因子在素数表的位置. 析:看起来挺简单的题,可是我却WA了一晚上,后来终于明白了,这个第一层循环不是到平方根, 这个题和判断素数不一样,只要明白了这一点,就很简单了. ...
- python3中 for line1 in f1.readlines():,for line1 in f1:,循环读取一个文件夹
循环读取一个文件: fr.seek(0) fr.seek(0, 0) 概述 seek() 方法用于移动文件读取指针到指定位置. 语法 seek() 方法语法如下: fileObject.seek(of ...