【dfs】【bfs】【链表】 求连通分量 (ssl 1759)

求连通分量

ssl 1759

题目大意

由n个点组成的无向图,求连通在一起的点数最大是多少


原题

求一个图的连通分量

在这里插入图片描述

Input

n 顶点数(<=100)

Output

连通分量

Sample Input

8

6 3

1 2

2 5

5 4

4 1

8 7

0 0

Sample Output

4


方法一(dfs 邻接矩阵)

用邻接矩阵的方法来存,再用dfs,要判断到过没

#include<cstdio>
#include<iostream>
using namespace std;
int n,x,y,a[101][101],ans;
bool p[101];
int dfs(int now)
{int t=1;//自身p[now]=1;//记录for (int i=1;i<=n;i++)if ((!p[i])&&(a[now][i]))//到过未,连不连通t+=dfs(i);//累加return t;
}
int main()
{scanf("%d%d%d",&n,&x,&y);while(x&&y){a[x][y]=1;a[y][x]=1;//正反都要scanf("%d%d",&x,&y);}for (int i=1;i<=n;i++)if (!p[i])ans=max(ans,dfs(i));//求总值printf("%d",ans);
}

方法二(dfs 邻接表)

用dfs,但是用链表的方法存,搜索时就省了很多时间

#include<cstdio>
#include<iostream>
using namespace std;
int s[101],n,x,y,ans,w;
bool p[101];
struct rec
{int ss,next;//ss为连接的数,next和同一个点的另一条线
}a[10005];
int dfs(int now)
{int t=1;//自身p[now]=1;//已走过for (int i=s[now];i;i=a[i].next)//以now为起点的所有边if (!p[a[i].ss]) t+=dfs(a[i].ss);//判断到过没,没到过就去return t;
}
int main()
{scanf("%d%d%d",&n,&x,&y);while (x&&y){a[++w].ss=y;//下一个数a[w].next=s[x];//下一条边s[x]=w;//替换a[++w].ss=x;//反过来,做一遍(无向)a[w].next=s[y];s[y]=w;scanf("%d%d",&x,&y);}for (int i=1;i<=n;i++)if (!p[i])ans=max(ans,dfs(i));//求最大值printf("%d",ans);
}

方法三(bfs 邻接矩阵)

同样是用邻接矩阵,但用bfs,从每一个位置开始,结果为队列的长度

**#include<cstdio>
#include<iostream>
using namespace std;
int n,x,y,a[101][101],p[101],d[101],ans;
int bfs(int x)
{int head=0,tail=1;d[1]=x;//入队p[x]=1;//记录do{head++;for (int i=1;i<=n;i++)if ((!p[i])&&(a[d[head]][i]))//是否可到,到过没{d[++tail]=i;//入队p[i]=1;//记录}}while(head<=tail);return tail;//结果就是长度
}
int main()
{scanf("%d%d%d",&n,&x,&y);while (x&&y){a[x][y]=1;a[y][x]=1;scanf("%d%d",&x,&y);}for (int i=1;i<=n;i++)if (!p[i])//判断ans=max(ans,bfs(i));printf("%d",ans);return 0;
}**

方法四(bfs 邻接表)

用bfs和邻接表(二+三),内容基本就是方法二和方法三的合成体

#include<cstdio>
#include<iostream>
int n,x,y,w,ans,p[101],s[101],d[101];
using namespace std;
struct rec
{int ss,next;//定义
}a[10005];
int bfs(int now)
{int head=0,tail=1;d[1]=now;//预处理p[now]=1;//记录do{head++;for (int i=s[d[head]];i;i=a[i].next)//同一个点连接的不同线if (!p[a[i].ss])//判断到过没{p[a[i].ss]=1;//记录d[++tail]=a[i].ss;//入队}}while(head<=tail);return tail;
}
int main()
{scanf("%d%d%d",&n,&x,&y);while (x&&y){a[++w].ss=y;//后面的数a[w].next=s[x];//同一个点的其他线s[x]=w;//代替a[++w].ss=x;//相反a[w].next=s[y];s[y]=w;scanf("%d%d",&x,&y);}for (int i=1;i<=n;i++)if (!p[i])ans=max(ans,bfs(i));printf("%d",ans);return 0;
}

方法五The last(bfs 邻接表——STL{\color{Red}STL}STL

个方法四基本相同,但运用了一种鲜为我知的技术——STL(queue),改了一些地方

#include<cstdio>
#include<iostream>
#include<queue>
int n,x,y,w,ans,p[101],s[101],d[101];
using namespace std;
struct rec
{int ss,next;
}a[10005];
int bfs(int now)
{int g,jg=1;queue<int>d;d.push(now);//在尾端插入p[now]=1;while(d.size()){g=d.front();//队头d.pop();//队头出列for (int i=s[g];i;i=a[i].next)//基本前面的if (!p[a[i].ss]){jg++;//结果p[a[i].ss]=1;d.push(a[i].ss);//入队}}return jg;
}
int main()
{scanf("%d%d%d",&n,&x,&y);while (x&&y){a[++w].ss=y;a[w].next=s[x];s[x]=w;a[++w].ss=x;a[w].next=s[y];s[y]=w;scanf("%d%d",&x,&y);}for (int i=1;i<=n;i++)if (!p[i])ans=max(ans,bfs(i));printf("%d",ans);//和方法四一样的主程序return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发布 Rafy .NET Standard 版本 Nuget 包

去年年中&#xff0c;Rafy 框架的源码就已经支持了 Net Standard 2.0 版本。其开源代码也已经上传到 Github 中&#xff1a;https://github.com/zgynhqf/rafy/tree/NetStandard2.0 。但是这都只是在源码层面支持 NS2.0&#xff0c;并没有发布其正式的 Nuget 包。要使用这个版本…

你关心才值得分享 | K8S网络安全之访问控制技术实践

(请允许我插播下广告&#xff0c;便于其它伙伴了解趣码 Cloud Coder)还是那句话&#xff0c;你关心才值得分享~最近的一起分享就在5.10本周四晚&#xff0c;精彩千万不要错过&#xff01;Hi&#xff0c;你是不是也曾觉得K8S&#xff08; Kubernetes &#xff09;网络安全话题范…

从Xamarin.Essentials谈Xamarin库的封装

编者语&#xff1a;Xamarin在国内的推广还需要努力&#xff0c;其实这真的是移动端开发的一大福音&#xff0c;毕竟用一份代码的时间可以生成iOS/Android/Windows/Linux/macOS/Tizen多个平台&#xff0c;而且是原生的性能。Xamarin在Build 2018发布的新功能有Xamarin.Essential…

【最短路】【图论】【Floyed】牛的旅行(ssl 1119/luogu 1522)

牛的旅行 ssl 1119 luogu 1522 题目大意 有两堆点&#xff0c;每一堆点之中的任何两个点都一定有相连的路线&#xff0c;连接两堆点中的各一个点&#xff0c;使最远的两个点的距离最短 原题 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称…

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

什么是RESTREST 是 Representational State Transfer 的缩写. 它是一种架构的风格, 这种风格基于一套预定义的规则, 这些规则描述了网络资源是如何定义和寻址的.一个实现了REST这些规则的服务就叫做RESTful的服务.最早是由Roy Fielding提出的.RPC 风格/getUsers/getUser?id1/c…

使用ML.NET预测纽约出租车费

有了上一篇《.NET Core玩转机器学习》打基础&#xff0c;这一次我们以纽约出租车费的预测做为新的场景案例&#xff0c;来体验一下回归模型。场景概述我们的目标是预测纽约的出租车费&#xff0c;乍一看似乎仅仅取决于行程的距离和时长&#xff0c;然而纽约的出租车供应商对其他…

使用ML.NET实现情感分析[新手篇]

在发出《.NET Core玩转机器学习》和《使用ML.NET预测纽约出租车费》两文后&#xff0c;相信读者朋友们即使在不明就里的情况下&#xff0c;也能按照内容顺利跑完代码运行出结果&#xff0c;对使用.NET Core和ML.NET&#xff0c;以及机器学习的效果有了初步感知。得到这些体验后…

潘正磊:再过三五年 AI会变成开发人员的基本概念

在微软Build 2018开发者大会上&#xff0c;微软公司全球开发平台事业部的资深副总裁潘正磊&#xff08;Julia Liuson&#xff09;接受了界面记者在内的采访。潘正磊在微软西雅图总部带领一千多人组成的团队&#xff0c;微软的开发工具&#xff0c;包括Visual Studio&#xff0c…

qMISPlat入门级使用问题解答一

qMISPlat 2.0(业务配置开发平台) 自2018-4-18号正式开源以来&#xff0c;得到了众多.net core爱好者的关注&#xff0c;现将近半个月以来&#xff0c;大家反馈的一些使用配置方面的问题统一作如下解答。如你对qMISPlat不了解&#xff0c;请查看文章qMISPlat产品介绍。一、从码云…

【模拟】游戏(jzoj 1614)

游戏 题目大意&#xff1a; 有一个n*n的棋盘&#xff0c;有一个坐标在x,y的棋子&#xff0c; 1、2号玩家可以将他向左&#xff0c;向下&#xff0c;向左下&#xff08;45∘45^{\circ}45∘&#xff09;移动若干格&#xff0c;假如他们都是AKIOI聪明绝顶的巨佬&#xff0c;请问…

P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】

正题 题目链接:https://www.luogu.com.cn/problem/P4593 题目大意 场上有若干只怪&#xff0c;最高的为nnn&#xff0c;每个怪血量不同&#xff0c;有mmm个血量不存在。 不停释放亵渎&#xff08;全场打一&#xff0c;如果有怪死亡就再次生效&#xff09;&#xff0c;每次一…

如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性&#xff0c;它使得我们可以用 C# 语言编写扩展&#xff1b;利用这种扩展性&#xff0c;我们可以为我们的项目定制一部分的编译细节。NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法&#xff0c;同时还…

Platform.Uno介绍

编者语&#xff1a;Xamarin国内很多人说缺乏可用的实例&#xff0c;我在写书过程中在完善一些常用场景的例子&#xff0c;希望帮到大家。Build 2018结束一周了&#xff0c;善友问我要不要谈谈Xamarin的一些变化&#xff0c;但碍于时间有限一直没有付诸行动。想想总得写点什么给…

ASP.NET Core amp; Docker 实战经验分享

一.前言最近一直在研究和实践ASP.NET Core、Docker、持续集成。在ASP.NET Core 和 Dcoker结合下遇到了一些坑&#xff0c;在此记录和分享&#xff0c;希望对大家有一些帮助。二.中间镜像我前面写过一个 《ASP.NET Core & Docker 零基础持续集成 》的教程。里面我们通过持续…

【图论】【最短路】【SPFA】香甜的黄油 Sweet Butter (luogu 1828)

香甜的黄油 Sweet Butter luogu 1828 题目大意&#xff1a; 有n头奶牛&#xff0c;他们在不同的牧场中&#xff0c;他们之间有一些路&#xff0c;现在要让他们去一个地方吃黄油&#xff0c;使他们的总距离最小 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法&…

【dfs】简单游戏(jzoj 2121)

简单游戏 题目大意 原本有n个数字&#xff0c;第1,2个相加&#xff0c;第2&#xff0c;3个相加……第n-1,n个相加&#xff0c;由此得出一个长度为n-1的新序列&#xff0c;然后不停重复&#xff0c;最后得出一个t&#xff0c;现在给出一开始的n和t求符合的序列&#xff08;字典…

[翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能

原文: Comparing AWS Lambda performance of Node.js, Python, Java, C# and GoAWS 最近宣布他们支持了 C&#xff03; (Net Core 2.0 版本) 和 Go 语言来实现 Lambda 功能。(译者注: AWS Lambda 是 AWS 推出的 Serverless 功能&#xff0c;请参阅这里或 Serverless 相关资料)做…

【结论】立体井字棋(jzoj 2124)

立体井字棋 题目大意&#xff1a; 在一个nnn的正方体中&#xff0c;由n个格子连成一条直线的方案数&#xff08;多少种可能用n个格子连成一条直线&#xff09; 样例输入 2 样例输出 28 数据范围限制 对于30%的数据&#xff0c; n<10&#xff1b; 对于100%的数据&am…

ASP.NET Core Identity 实战(3)认证过程

如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆&#xff0c;那么你一定会疑惑 认证这个名词&#xff0c;这太正式了&#xff0c;这到底代表这什么&#xff1f;获取资源之前得先过两道关卡Authentication & Authorization要想了解Identity中用户登录之后&…

简明 ASP.NET Core 手册

编者&#xff1a;在4月份推送过这篇文章 简明 ASP.NET Core 手册 &#xff0c;今天再次推荐这篇文章&#xff0c;是因为原作者更新到了新版本1.1.0&#xff0c;改动很大&#xff0c;几乎所有章节都有很大程度的调整&#xff0c;这些调整都是根据读者的建议而做&#xff0c;而且…