• 题目链接

    因版权原因不予提供

  • 分析

    别看这是普及模拟赛,其实基本上是提高难度...像这题做NOIpT1的话也说的过去

    有个很显然的暴力思路就是枚举c,a,b,时间复杂度\(O(N^3)\),

    然后正解其实就是改变枚举顺序,我们先枚举a点,然后将所有可作为c点的点存起来,再从那些c点遍历得到可行b点统计答案,这样就不会重复且符合题意

    不过这道题需要仔细读题,像我这种菜B一开始就理解错题意了

  • 代码

include

include

include

include

include

include

include

include

include

define ll long long

define ri register int

define ull unsigned long long

using namespace std;

template inline void read(T &x){

x=0;int ne=0;char c;

while(!isdigit(c=getchar()))ne=c'-';

x=c-48;

while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;

x=ne?-x:x;return ;

}

const int maxn=3005;

const int inf=0x7fffffff;

struct Edge{

int ne,to;

}edge[maxn<<1],_edge[maxn<<1];

int h[maxn],num_edge=1;

inline void add_edge(int f,int to){

edge[++num_edge].ne=h[f];

edge[num_edge].to=to;

h[f]=num_edge;

}

int _h[maxn],_num_edge=1;//反向边

inline void _add_edge(int f,int to){

_edge[++_num_edge].ne=_h[f];

_edge[_num_edge].to=to;

_h[f]=_num_edge;

}

int n,m,sc,sb;

bool vis[maxn];

vector g;

void _dfs(int now,int fa){

int v;if(vis[now])return ;

vis[now]=1;g.push_back(now);

for(ri i=_h[now];i;i=_edge[i].ne){

v=_edge[i].to;

if(vfa)continue;

_dfs(v,now);

}

return ;

}

void dfs(int now,int fa){

int v;if(vis[now])return ;

sb++;vis[now]=1;

for(ri i=h[now];i;i=edge[i].ne){

v=edge[i].to;

if(v==fa)continue;

dfs(v,now);

}

return ;

}

int main(){

int T,x,y,z;

srand(19260817);//闷声发大财 预祝长者大寿 Long Live Jiang !!!

read(T);

while(T--){

ll ans=0;

read(n),read(m);

memset(h,0,sizeof(h));

memset(_h,0,sizeof(_h));

num_edge=_num_edge=1;

for(ri i=1;i<=m;i++){

read(x),read(y);

add_edge(x,y);

_add_edge(y,x);

}

int ss=(n+1)*sizeof(bool);

for(ri i=1;i<=n;i++){

memset(vis,0,ss);

g.clear();

_dfs(i,0);

memset(vis,0,ss);

for(ri j=0;j<g.size();j++){

sb=0;

dfs(g[j],0);

ans+=sb;

//printf("--%d %d %d\n",g[j],i,sb);

}

}

printf("%lld\n",ans);

}

return 0;

}

ZROI17普及23-A.如烟题解--技巧枚举的更多相关文章

  1. ZROI17普及23-B星空题解--图的灵活转化

    题目链接 版权原因不予提供 分析 这题思路很妙啊,虽然已经算半个套路题(因为我太菜了) 将框视为点,若一个球能放在\(x\)或\(y\)框,则\(x,y\)连一条无向边.有一条非常显然的性质是:在联通 ...

  2. 2020.3.23 模拟赛游记 & 题解

    这次的模拟赛,实在是水. 数据水,\(\texttt{std}\) 水,出题人水,做题人也水.??? 游记就说一句: 水. T1 metro 弱智题. 人均 \(100pts\). #pragma G ...

  3. UVa140 Bandwidth 小剪枝+双射小技巧+枚举全排列+字符串的小处理

    给出一个图,找出其中的最小带宽的排列.具体要求见传送门:UVa140 这题有些小技巧可以简化代码的编写. 本题的实现参考了刘汝佳老师的源码,的确给了我许多启发,感谢刘老师. 思路: 建立双射关系:从字 ...

  4. 51nod 1943 联通期望 题解【枚举】【二进制】【概率期望】【DP】

    集合统计类期望题目. 题目描述 在一片大海上有 \(n\) 个岛屿,规划建设 \(m\) 座桥,第i座桥的成本为 \(z_i\),但由于海怪的存在,第 \(i\) 座桥有 \(p_i\) 的概率不能建 ...

  5. 【uva 1312】Cricket Field(算法效率--技巧枚举)

    题意:一个 L*R 的网格里有 N 棵树,要求找一个最大空正方形并输出其左下角坐标和长.(1≤L,R≤10000, 0≤N≤100) 解法:枚举空正方形也就是枚举空矩阵,先要固定一个边,才好继续操作. ...

  6. Static Sushi AtCoder - 4118 (技巧枚举)

    Problem Statement "Teishi-zushi", a Japanese restaurant, is a plain restaurant with only o ...

  7. UVA-1312 Cricket Field (技巧枚举)

    题目大意:在一个w*h的网格中,有n个点,找出一个最大的正方形,使得正方形内部没有点. 题目分析:寻找正方形实质上等同于寻找矩形(只需令长宽同取较短的边长).那么枚举出所有可能的长宽组合取最优答案即可 ...

  8. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  9. 牛客网NOIP赛前集训营-普及组(第一场)

    前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现 ...

随机推荐

  1. 转:android DownloadManager: java.lang.SecurityException: Invalid value for visibility: 2

    1.问题描述 今天使用Android系统的DownloadManager进行下载操作时,爆了如下所示的错误: java.lang.RuntimeException: Unable to start s ...

  2. MediaPlayer: BufferQueue has been abandoned 解决方案

    最近在做一个播放器,需要实现一个从小屏切换到全屏的效果,我用的是TextureView + MediaPlayer 的方式去实现,当需要切换成全屏时,我在 TextureView 的 onSurfac ...

  3. PHP 根据 IP 获取定位数据

    使用的工具 GEOIP 配置 在PHP中使用 使用的工具 GEOIP: 什么是GepIP ? 所谓GeoIP,就是通过来访者的IP, 定位他的经纬度,国家/地区,省市,甚至街道等位置信息.这里面的技术 ...

  4. centos Dockerfile

     FROM centos:latest   LABEL maintainer "wojiushixiaobai"   WORKDIR /opt       ENV GUAC_VER ...

  5. Windows 10在2018四月更新中默认安装了OpenSSH客户端

    客户端安装路径 C:\Windows\System32\OpenSSH 版本:

  6. Mysql开启审计功能

    第一种经验证,有效. 第一种用macfee的mysql审计插件. 下载地址:https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-72 ...

  7. Zabbix之设置监控主机某个端口并发送邮件告警

    Zabbix可以配置监控主机的某个端口在该端口down之后触发发送告警邮件 一,添加监控项 选择主机 监控项 创建监控项 查看监控图形 二,设置触发器 设置触发器当该监控的端口down时可以发送告警 ...

  8. 创建.Net Core For WPF项目并且添加VS Code编译运行支持

    1.下载最新的Visual Studio 2019或者Preview版本,新建项目,找到"WPF App(.Net Core)"模板. 2.输入项目名称"NetCore- ...

  9. windows下进程与线程

    windows下进程与线程 Windows是一个单用户多任务的操作系统,同一时间可有多个进程在执行.进程是应用程序的运行实例,可以理解为应用程序的一次动态执行:而线程是CPU调度的单位,是进程的一个执 ...

  10. 乐字节Java反射之四:反射相关操作

    大家好,乐字节小乐继续为Java初学者讲述Java基础知识.上次说到乐字节Java反射之三:方法.数组.类加载器,这次是Java反射之四:反射相关操作 1.操作属性 //1.获取Class对象 Cla ...