【SSL】2021.12.17 1759.求连通分量

2023-10-22 18:10
文章标签 17 ssl 连通 分量 1759 2021.12

本文主要是介绍【SSL】2021.12.17 1759.求连通分量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

快速链接

  • 原题网址
  • 题目描述
  • 格式
    • 输入格式
    • 输出格式
  • 样例
    • 输入样例
    • 输出样例
  • 提示
  • 解题思路
  • Code
    • dfs
      • 邻接表
      • 邻接矩阵
      • vector
    • bfs
      • 邻接表
      • 邻接表+queue
      • 邻接矩阵
      • vector

原题网址

由于某些原因,这个网址会进不去…

题目描述

求一个图的连通分量.
1759-1

格式

输入格式

一个数 n n n表示顶点数。
接下来每行输入空格隔开的两个数 u , v u,v u,v,表示 u , v u,v u,v之间有一条边,以 0 , 0 0,0 0,0结束。

输出格式

图的连通分量。

样例

输入样例

8
6 3
1 2
2 5
5 4
4 1
8 7
0 0

输出样例

4

提示

n ≤ 100 n\le100 n100

解题思路

模板题。

Code

dfs

邻接表

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100,maxm=10000;
int n,x,y,s,ans,len,l[maxn+5],v[maxn+5];
struct node {int y,next;
}nodes[maxm+5];
void dfs(int q) {v[q]=1;for(int i=l[q];i;i=nodes[i].next) {if(!v[nodes[i].y]) {s++;dfs(nodes[i].y);}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {nodes[++len]=(node){y,l[x]};l[x]=len;nodes[++len]=(node){x,l[y]};l[y]=len;cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;dfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

邻接矩阵

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100;
int n,x,y,s,ans,g[maxn+5][maxn+5],v[maxn+5];
void dfs(int q) {v[q]=1;for(int i=1;i<=n;i++) {if(!v[i]&&g[q][i]) {s++;dfs(i);}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {g[x][y]=g[y][x]=1;cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;dfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

vector

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100;
int n,x,y,s,ans,v[maxn+5];
vector<int> g[maxn+5];
void dfs(int q) {v[q]=1;for(int i=0;i<g[q].size();i++) {int j=g[q][i];if(!v[j]) {s++;dfs(j);}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {g[x].push_back(y);g[y].push_back(x);cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;dfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

bfs

邻接表

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100,maxm=10000;
int n,x,y,s,ans,len,l[maxn+5],v[maxn+5];
struct node {int y,next;
}nodes[maxm+5];
void bfs(int q) {int head=0,tail=1,state[maxn+5];state[1]=q;do {head++;for(int i=l[state[head]];i;i=nodes[i].next) {if(!v[nodes[i].y]) {v[nodes[i].y]=1;s++;state[++tail]=nodes[i].y;}}}while(head<tail);
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {nodes[++len]=(node){y,l[x]};l[x]=len;nodes[++len]=(node){x,l[y]};l[y]=len;cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;bfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

邻接表+queue

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100,maxm=10000;
int n,x,y,s,ans,len,l[maxn+5],v[maxn+5];
struct node {int y,next;
}nodes[maxm+5];
void bfs(int q) {int head=0,tail=1;queue<int>state;state.push(q);while(state.size()){int w=state.front();state.pop();for(int i=l[w];i;i=nodes[i].next) {if(!v[nodes[i].y]) {v[nodes[i].y]=1;s++;state.push(nodes[i].y);}}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {nodes[++len]=(node){y,l[x]};l[x]=len;nodes[++len]=(node){x,l[y]};l[y]=len;cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;bfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

邻接矩阵

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100;
int n,x,y,s,ans,g[maxn+5][maxn+5],v[maxn+5];
void bfs(int q) {int head=0,tail=1,state[maxn+5];state[1]=q;do {head++;for(int i=1;i<=n;i++) {if(g[state[head]][i]&&!v[i]) {v[i]=1;s++;state[++tail]=i;}}}while(head<tail);
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {g[x][y]=g[y][x]=1;cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;bfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

vector

#include<iostream>
#include<istream>
#include<ostream>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
using namespace std;
const int maxn=100;
int n,x,y,s,ans,v[maxn+5];
vector<int> g[maxn+5];
void bfs(int q) {queue<int>w;w.push(q);v[q]=1;while(!w.empty()) {int e=w.front();w.pop();for(int i=0;i<g[e].size();i++) {int r=g[e][i];if(!v[r]) {v[r]=1;s++;w.push(r);}}}
}
int main() {ios::sync_with_stdio(false);cin.tie(0);cin>>n>>x>>y;while(x&&y) {g[x].push_back(y);g[y].push_back(x);cin>>x>>y;}for(int i=1;i<=n;i++) {if(!v[i]) {v[i]=s=1;bfs(i);ans=max(ans,s);}}cout<<ans;return 0;
}

这篇关于【SSL】2021.12.17 1759.求连通分量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/262875

相关文章

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

17 通过ref代替DOM用来获取元素和组件的引用

重点 ref :官网给出的解释是: ref: 用于注册对元素或子组件的引用。引用将在父组件的$refs 对象下注册。如果在普通DOM元素上使用,则引用将是该元素;如果在子组件上使用,则引用将是组件实例: <!-- vm.$refs.p will be the DOM node --><p ref="p">hello</p><!-- vm.$refs.child will be the c

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)「首先来看看目前已有的资料,还会不断更新哦~一次购买,后续不会再被收费哦,保证是全网最全资源,随着后续内容更新,价格会上涨,越早购买,价格越低,让大家再也不需要到处买断片资料啦~💰💸👋」�

828华为云征文|基于Flexus云服务器X实例的应用场景-拥有一款自己的ssl监控工具

先看这里 写在前面效果图华为云Flexus云服务器X实例介绍特点可选配置购买 连接服务器Uptime-kuma简介开源信息部署准备工作:docker部署命令访问uptime-kuma 基本配置总结 写在前面 作为一个个人开发者,相信你手里肯定也有不少自己的服务,有的服务呢也是https的。 以前ssl各厂都是可以免费申请一年的,我们更换的频率还好,比较小;但是最近,各厂都

算法练习题17——leetcode54螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。  代码 import java.util.*;class Solution {public List<Integer> spiralOrder(int[][] matrix) {// 用于存储螺旋顺序遍历的结果List<Integer> result = new ArrayList

标准库标头 <filesystem> (C++17)学习

此头文件是文件系统支持库的一部分。本篇介绍filesystem命名空间的一些函数。 函数 在命名空间 std::filesystem 定义 absolute (C++17) 组成一个绝对路径 (函数) canonicalweakly_canonical (C++17) 组成一个规范路径 (函数) relativeproximate (C++17) 组成一个相对路径 (函数) copy (C

C++基础:折叠表达式(C++17)

C++基础:折叠表达式(C++17) 简介语法展开 示例 简介 C++17 引入了一种新的语法特性,叫做折叠表达式,它允许编译器在模板参数包展开时进行元编程操作。折叠表达式的引入极大地简化了元编程代码,使其变得更为直观和简介。 语法 折叠表达式,简单来说,就是以二元运算符对形参包进行折叠,总共有以下四种类型: 一元右折叠一元左折叠二元右折叠二元左折叠 其对应的语法如下: