E. Reachability from the Capital

这个题目就是给你一个有向图,给你起点,问增加多少条边让这个图变成一个连通图。

这个因为n只有5000m只有5000

所以可以暴力枚举这个n,用n*n的复杂度过去。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <stack>
#include <bitset>
#include <vector>
#include <map>
#include <string>
#include <cstring>
#include <bitset>
using namespace std;
const int maxn=5e3+;
vector<int>G[maxn];
bool vis[maxn];
bool cnt[maxn];
int ans=;
void dfs(int u,int f){
ans++;
vis[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]) continue;
dfs(v,u);
}
} int num;
void DFS(int u,int f){
if(vis[u]) return ;
num++;
cnt[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]||cnt[v]) continue;
DFS(v,u);
}
}
vector<int>a;
int main(){
int n,m,s;
scanf("%d%d%d",&n,&m,&s);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
dfs(s,-);
for(int i=;i<=n;i++){
if(!vis[i]) a.push_back(i);
}
int res=;
while(ans<n){
int maxs=,id=-;
for(int i=;i<a.size();i++){
memset(cnt,,sizeof(cnt));
num=;
int x=a[i];
DFS(x,-);
if(num>maxs) maxs=num,id=x;
}
if(id==-) break;
res++;
dfs(id,-);
}
printf("%d\n",res);
return ;
}

未优化

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <stack>
#include <bitset>
#include <vector>
#include <map>
#include <string>
#include <cstring>
#include <bitset>
using namespace std;
const int maxn=5e3+;
vector<int>G[maxn];
bool vis[maxn];
bool cnt[maxn];
int ans=;
void dfs(int u,int f){
ans++;
vis[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]) continue;
dfs(v,u);
}
} int num;
void DFS(int u,int f){
if(vis[u]) return ;
num++;
cnt[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]||cnt[v]) continue;
DFS(v,u);
}
} void dfs2(int u,int f){
if(vis[u]) return ;
cnt[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]||cnt[v]==) continue;
dfs2(v,u);
}
} vector<int>a;
int main(){
int n,m,s;
scanf("%d%d%d",&n,&m,&s);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
dfs(s,-);
for(int i=;i<=n;i++){
if(!vis[i]) a.push_back(i);
}
int res=;
while(ans<n){
int maxs=,id=-;
for(int i=;i<a.size();i++){
num=;
int x=a[i];
DFS(x,-);
dfs2(x,-);
if(num>maxs) maxs=num,id=x;
}
if(id==-) break;
res++;
dfs(id,-);
}
printf("%d\n",res);
return ;
}

dfs优化memset

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <stack>
#include <bitset>
#include <vector>
#include <map>
#include <string>
#include <cstring>
#include <bitset>
using namespace std;
const int maxn=5e3+;
vector<int>G[maxn];
bool vis[maxn];
bool cnt[maxn];
int ans=;
void dfs(int u,int f){
ans++;
vis[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]) continue;
dfs(v,u);
}
} int num;
void DFS(int u,int f){
if(vis[u]) return ;
num++;
cnt[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]||cnt[v]) continue;
DFS(v,u);
}
} void dfs2(int u,int f){
if(vis[u]) return ;
cnt[u]=;
for(int i=;i<G[u].size();i++){
int v=G[u][i];
if(v==f||vis[v]||cnt[v]==) continue;
dfs2(v,u);
}
} vector<int>a;
int main(){
int n,m,s;
scanf("%d%d%d",&n,&m,&s);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
dfs(s,-);
for(int i=;i<=n;i++){
if(!vis[i]) a.push_back(i);
}
int res=;
while(ans<n){
int maxs=,id=-;
for(int i=;i<a.size();i++){
num=;
int x=a[i];
DFS(x,-);
dfs2(x,-);
if(num>maxs) maxs=num,id=x;
}
if(id==-) break;
res++;
dfs(id,-);
}
printf("%d\n",res);
return ;
}

memset优化

E. Reachability from the Capital dfs暴力的更多相关文章

  1. ACM: FZU 2107 Hua Rong Dao - DFS - 暴力

    FZU 2107 Hua Rong Dao Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  2. ACM: Gym 100935G Board Game - DFS暴力搜索

    Board Game Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u  Gym 100 ...

  3. hdu 5612 Baby Ming and Matrix games(dfs暴力)

    Problem Description These few days, Baby Ming is addicted to playing a matrix game. Given a n∗m matr ...

  4. hdu 1010 Tempter of the Bone(dfs暴力)

    Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...

  5. E - Reachability from the Capital

    E - Reachability from the Capital  CodeForces - 999E 题目链接:https://vjudge.net/contest/236513#problem/ ...

  6. NOIP 2002提高组 选数 dfs/暴力

    1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,…, ...

  7. E. Reachability from the Capital(tarjan+dfs)

    求联通分量个数,在dfs一次 #include <iostream> #include <algorithm> #include <cstring> #includ ...

  8. Codeforces Round #313 (Div. 1) B. Equivalent Strings DFS暴力

    B. Equivalent Strings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559 ...

  9. UVaLive 6625 Diagrams & Tableaux (状压DP 或者 DFS暴力)

    题意:给一个的格子图,有 n 行单元格,每行有a[i]个格子,要求往格子中填1~m的数字,要求每个数字大于等于左边的数字,大于上边的数字,问有多少种填充方法. 析:感觉像个DP,但是不会啊...就想暴 ...

随机推荐

  1. 查看jdk 线程 日志

    命令:jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令 这些命令 必须 在 linux jdk bin 路径 下执行 eq: ./jstack 10303 即可  如果想把 ...

  2. 小小的锁,大大的疑问?Lock疑问?

    Lock锁 怎么使用?怎么把下面的这个锁弄得比较合适,大家都能去买票?? 和synchronized相比的好处? lock的使用规范try finnally private final Reentra ...

  3. AJ学IOS(45)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。

    AJ分享,必须精品 简介 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信.打开其他应用等. 打电话 方法1 最简单最直接的方式:直接跳到拨号界面 NSURL ...

  4. 把川普射上太阳—如何用python制作小游戏

    1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装. Windows环境下打开Cmd(开始—运行—CMD),苹果系统 ...

  5. 告诉你那里最受欢迎,python爬取全国13个城市旅游数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  6. mybatis源码配置文件解析之二:解析settings标签

    在前边的博客中分析了mybatis解析properties标签,<mybatis源码配置文件解析之一:解析properties标签>.下面来看解析settings标签的过程. 一.概述 在 ...

  7. 详解 final 和 static

    在我们上一篇博文中提到了 fianl 这个关键字,对于这个关键字,本人在初学时也耗费了极大地心血,甚至和师兄进行了激烈的讨论,并且,在我们讨论.尝试 以及 翻阅各种资料,最终得出了合适.易懂的解释. ...

  8. 常见web漏洞的整理之SQL注入

    SQL注入: 简介: 全称Structured Query Language,即结构化查询语言,是一种特殊的编程语言,用于数据库中的标准数据查询语言.也被作为关系式数据库管理系统的标准语言. 原理: ...

  9. 散列表和JAVA中的hash

    引文 hello,今天写的数据结构是散列表(hash表),也算是一种基础数据结构了吧.学过计算机的人大概都能说出来这是个以空间换时间的东西,那么具体怎么实现的是今天要讨论的问题. 为什么需要它?主要还 ...

  10. s3cmd s3命令行工具

    Amazon S3 Tools: Command Line S3 Client Software and S3 Backup 官方网站