当前位置: 首页 > news >正文

[OD E 100] 服务器广播需要广播的服务器数量

题目

题目描述
服务器连接方式包括直接相连,间接连接。
A和B直接连接,B和C直接连接,则A和C间接连接。
直接连接和间接连接都可以发送广播。
给出一个N*N数组,代表N个服务器,
matrix[i][j] == 1,则代表i和j直接连接;不等于 1 时,代表i和j不直接连接。
matrix[i][i] == 1,即自己和自己直接连接。matrix[i][j] == matrix[j][i]。
计算初始需要给几台服务器广播, 才可以使每个服务器都收到广播。

输入描述
输入为N行,每行有N个数字,为0或1,由空格分隔,

构成N*N的数组,N的范围为 1 <= N <= 40

输出描述
输出一个数字,为需要广播的服务器的数量

示例1
输入

1 0 0
0 1 0
0 0 1

输出

3

说明

3 台服务器互不连接,所以需要分别广播这 3 台服务器

示例2
输入

1 1
1 1

输出

1

说明

2 台服务器相互连接,所以只需要广播其中一台服务器

代码

#include <iostream>
#include <vector>
#include <sstream>

using namespace std;

void dfs(vector<vector<int>>& matr, vector<bool>& visited, int x, int n)
{

	visited[x] = true;

	for (int i = 0; i < n; i++)
	{
		if (matr[x][i] == 1 && !visited[i])
		{
			dfs(matr, visited, i, n);
		}
	}
}

int main()
{
	vector<vector<int>> matr;
	string sLine;
	while (getline(cin, sLine))
	{
		istringstream iss(sLine);
		vector<int> row;
		int val;
		while (iss >> val)
		{
			row.push_back(val);
		}
		matr.push_back(move(row));
	}

	int n = matr.size();
	vector<bool> visited(n, false);
	int ans = 0;
	for (int i = 0; i < n; i++)
	{
		if (!visited[i])
		{
			dfs(matr, visited, i, n);
			ans++;
		}
	}

	cout << ans;

	return 0;
}

相关文章:

  • Win7编译GPU版llama.cpp部署deepseek-r1等大模型记录
  • 浅谈推理大模型中使用核心的算法
  • 青少年编程与数学 02-009 Django 5 Web 编程 19课题、RESTful API开发
  • DeepSeek 部署中的常见问题及解决方案:Mac 场景实践指南
  • uniapp 支付宝小程序自定义导航栏
  • OSM路网简化文档+实操视频讲解(道路中心线提取、拓扑检查,学术论文处理方式)5
  • LLMs Ollama
  • 【动态规划】详解 0-1背包问题
  • a-table排序提示的是英文,如果改成中文或自定义
  • 不受次数限制--轻松语音转文字
  • ASO中的A/B测试:2025全新指南
  • 全单模矩阵及其在分支定价算法中的应用
  • vue3 在element-plus表格使用render-header
  • 【力扣Hot 100】回溯1
  • gradio创建openai前端对接deepseek等模型流式输出markdown格式文本
  • SSH远程服务器免密码连接|含注意事项细节
  • 【在时光的棋局中修行——论股市投资的诗意哲学】
  • C语言中ASCII码与整型互相转换的那些事儿
  • C语言【基础篇】之函数——开启模块化开发的钥匙
  • 多人协同开发 —— Git Aoneflow工作流
  • 中国人保聘任田耕为副总裁,此前为工行浙江省分行行长
  • 言短意长|新能源领军者密集捐赠母校
  • 黄晓丹:用“诗心”找到生存的意义
  • 恒瑞医药赴港上市获证监会备案,拟发行不超8.15亿股
  • 滨江集团去年营收约691亿元,尚未结算的预收房款1253亿元
  • 葛兰西:“生活就是抵抗”