Gym101630C Connections
题目大意:
给出一个\(n\)个点\(m\)条边的有向图,无自环无重边。要求把这个图进行删边,直到只剩下\(2n\)条边,使得图中每个点都可以相互连通。
知识点: DFS
解题思路:
从点\(1\)出发,进行一次\(DFS\),把所有的点都访问一次,标记经过的边,这些边保证了点\(1\)能到所有的点。再额外建一个图(图中所有的边都是原图的边的反向),再进行一次与上面类似的DFS操作:从点\(1\)出发,把所有的点都访问一次,标记经过的边,这些边保证了所有的点都能到点\(1\)。两次\(DFS\)最多标记\(2n-2\)条边,并保证了所有点都能到点\(1\),点\(1\)能到所有点,如此所有点都能到所有点,每个点都可以相互连通。被标记的边就是必需的,删除其他边直到只剩下\(2n\)条边即可。
AC代码:
#include <bits/stdc++.h> using namespace std;
typedef pair<int,int> P;
const int maxn=+;
vector<int>G[maxn],tG[maxn];
P edge[maxn];
map<P,int> used;
int n;
bool vis[maxn];
void init(){
for(int i=;i<=n;i++) vis[i]=false;
}
void dfs1(int rt){
for(int i=;i<G[rt].size();i++){
if(!vis[G[rt][i]]){
vis[G[rt][i]]=true;
dfs1(G[rt][i]);
used[make_pair(rt,G[rt][i])]++;
}
}
}
void dfs2(int rt){
for(int i=;i<tG[rt].size();i++){
if(!vis[tG[rt][i]]){
vis[tG[rt][i]]=true;
dfs2(tG[rt][i]);
used[make_pair(tG[rt][i],rt)]++;
}
}
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int m,u,v;
scanf("%d%d",&n,&m);
used.clear();
for(int i=;i<=n;i++){
G[i].clear();
tG[i].clear();
}
for(int i=;i<=m;i++){
scanf("%d%d",&u,&v);
G[u].push_back(v),tG[v].push_back(u);
edge[i]=make_pair(u,v);
}
init();
vis[]=true;
dfs1();
init();
vis[]=true;
dfs2();
int has=m;
for(int i=;i<=m&&has>*n;i++){
if(used[edge[i]]==){
printf("%d %d\n",edge[i].first,edge[i].second);
has--;
}
}
}
return ;
}
Gym101630C Connections的更多相关文章
- Gym-101630C:Connections(生成树&构造)
题意:给定N点,M条有向边,满足任意点可以到达任意点.现在叫你保留2*N边,任然满足任意点可以到达任意点,输出删除的边. 思路:从1出发,DFS,得到一颗生成树,有N-1条边.反向建题.还是从1出发, ...
- 解决mysql too many connections的问题
由于公司服务器上的创建的项目太多,随之创建的数据库不断地增加,在用navicat链接某一个项目的数据库时会出现too many connections ,从而导致项目连接数据库异常,致使启动失败. 为 ...
- Data source rejected establishment of connection, message from server: "Too many connections"解决办法
异常名称 //数据源拒绝从服务器建立连接.消息:"连接太多" com.MySQL.jdbc.exceptions.jdbc4.MySQLNonTransientConnection ...
- Configure Security Settings for Remote Desktop(RDP) Services Connections
catalogue . Configure Server Authentication and Encryption Levels . Configure Network Level Authenti ...
- 问题解决:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
错误提示: psql: could not connect to server: No such file or directory Is the server running locally and ...
- Too Many Connections: How to Increase the MySQL Connection Count To Avoid This Problem
1.问题描述 在启动使用mysql数据库的项目时,遇到一个报错,如下: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConn ...
- Configure the max limit for concurrent TCP connections(转)
To keep the TCP/IP stack from taking all resources on the computer, there are different parameters t ...
- 打开mysql时,提示 1040,Too many connections
打开mysql时,提示 1040,Too many connections,这样就无法打开数据库,看不了表里边的内容了. 出现这个问题的原因是,同时对数据库的连接数过大,mysql默认的最大连接数是1 ...
- mysql连接数设置操作(Too many connections)
mysql在使用过程中,发现连接数超了~~~~ [root@linux-node1 ~]# mysql -u glance -h 192.168.1.17 -pEnter password: ERRO ...
随机推荐
- jax-rs下载文件
@Path("/file") public class FileService { private static final String FILE_PATH = "c: ...
- Character Array and Character Pointer
最近复习数据结构实验时,碰到这么一行代码,看的有点不爽. typedef char** HuffmanCode; 借此梳理下数组和指针. int* p; //指针变量p中存的地址代表的内存单元中的数据 ...
- C语言基础知识总结
知识点的回忆与巩固 一. 条件分支结构 1.if分支语句 2.switch语句 二.循环体部分知识点整理 1.for循环 2.while循环-适合不确定循环次数时使用 三.字符串与数组 数组的操作 1 ...
- muduo网络库源码学习————Exception类
Exception类是为异常捕获而设计,可以获得异常的信息以及栈的回溯信息 (原来的代码没有demangle成员函数,输出的格式比较难看,加了demangle成员函数,利用demangle成员函数可以 ...
- Linux文件删除空间未释放
当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放,很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删除到回 ...
- json格式总结
json格式分为两种: 1.键值对: 2.数组:其中元素可以是字符串.数字.数组,还可以相互嵌套 其中图片来源于:https://blog.csdn.net/huapenguag/article/de ...
- 多线程高并发编程(7) -- Future源码分析
一.概念 A Future计算的结果. 提供方法来检查计算是否完成,等待其完成,并检索计算结果. 结果只能在计算完成后使用方法get进行检索,如有必要,阻塞,直到准备就绪. 取消由cancel方法执行 ...
- docker-compose安装rabbitmq
编写时间:2020-05-08 参考文档:docker安装rabbitmq 1. 编写docker-compose.yml version: '3' services: rabbitmq: image ...
- Coursera课程笔记----Write Professional Emails in English----Week 4
Request and Apology Emails(Week 4) How to Write Request Emails Write more POLITELY & SINCERELUY ...
- mongodb cluster
假设三台机器,ip分别为192.168.1.10,192.168.1.11,192.168.1.12,分别在每台电脑上下载并解压mongodb,关闭防火墙或者开放防火墙端口 一.安装shard 配置文 ...