博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1816. 连通(BFS+DFS+并查集)
阅读量:3969 次
发布时间:2019-05-24

本文共 1764 字,大约阅读时间需要 5 分钟。

题意:如果无向图 G每对顶点v和w都有从v到w的路径,那么称无向图G是连通的。现在给定一张无向图,判断它是否是连通的。第一行有 2 个整数 n,m(0<n,m<10^6)。接下来m行每行有 2 个整数u,v表示u和v有边连接。
代码:

//bfs#include
#include
#include
#include
#include
#include
using namespace std;#define MAXN 1000000vector
a[MAXN];int vis[MAXN];queue
q; void bfs(int vt){ q.push(vt); while(q.size()){ int t=q.front(); q.pop(); for(int i:a[t]){ if(!vis[i]){ vis[i]=1; q.push(i); } } }}int main(){ int n,m; cin>>n>>m; int u,v; for(int i=1;i<=m;i++){ cin>>u>>v; a[u].push_back(v); a[v].push_back(u); } vis[1]=1; bfs(1); int flag=0; for(int i=1;i<=n;i++){ if(vis[i]==0){ flag=1; } } if(flag){ cout<<"no"<
//DFS#include
#include
#include
#include
#include
#include
using namespace std;#define MAXN 1000000vector
a[MAXN];int vis[MAXN];queue
q; void dfs(int vt){ for(int i:a[vt]){ if(!vis[i]){ vis[i]=1; dfs(i); } }}int main(){ int n,m; cin>>n>>m; int u,v; for(int i=1;i<=m;i++){ cin>>u>>v; a[u].push_back(v); a[v].push_back(u); } vis[1]=1; dfs(1); int flag=0; for(int i=1;i<=n;i++){ if(vis[i]==0){ flag=1; } } if(flag){ cout<<"no"<
//并查集#include
#include
#include
#include
#include
#include
using namespace std;#define MAXN 1000000vector
a[MAXN];int f[MAXN],n;void init(){ for(int i=1;i<=n;i++){ f[i]=i; }}int find(int x){ if(x!=f[x]){ f[x]=find(f[x]); } return f[x];}void combine(int x,int y){ int tx=find(x); int ty=find(y); if(tx!=ty){ f[tx]=ty; }}int main(){ int m; cin>>n>>m; init(); int u,v; for(int i=1;i<=m;i++){ cin>>u>>v; combine(u,v); } int cnt=0; for(int i=1;i<=n;i++){ if(f[i]==i){ cnt++; } } if(cnt==1){ cout<<"yes"<

转载地址:http://apnki.baihongyu.com/

你可能感兴趣的文章
Linux下Tomcat的安装配置
查看>>
Win7下Eclipse中文字体太小
查看>>
java中使用net.sf.json对json进行解析
查看>>
JSONObject和JSONArray遍历数组与对象
查看>>
MySQL事务autocommit自动提交
查看>>
git中.gitignore设置
查看>>
ajax请求成功后打开新窗口地址
查看>>
python中的copy模块(浅复制和深复制)
查看>>
Linux SWAP分区占用率高,刷新SWAP分区方法
查看>>
Redis在新浪微博中的应用
查看>>
微博CacheService架构浅析
查看>>
Google字体库引起的首页加载缓慢的解决方法
查看>>
apache调优
查看>>
linux中rpm常用命令
查看>>
tcp连接的11种状态
查看>>
url转码和解码
查看>>
编译安装ruby1.9.3(No rvm)
查看>>
详解如何在ubuntu上安装node.js
查看>>
tmpfs用法
查看>>
你真的会python嘛?
查看>>