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

垡头做网站的公司室内设计接单网站

垡头做网站的公司,室内设计接单网站,厦门百度广告,网站建设技术哪个好题目描述给定一张点数为 n 的有向图的邻接矩阵,图中不包含自环,求该有向图的传递闭包。一张图的邻接矩阵定义为一个 nn 的矩阵 A(aij​)nn​,其中aij​{1,i 到 j 存在直接连边0,i 到 j 没有直接连边​一张图的传递闭包定义为一个 nn 的矩阵 B…

题目描述

给定一张点数为 n 的有向图的邻接矩阵,图中不包含自环,求该有向图的传递闭包。

一张图的邻接矩阵定义为一个 n×n 的矩阵 A=(aij​)n×n​,其中

aij​={1,i 到 j 存在直接连边0,i 到 j 没有直接连边​

一张图的传递闭包定义为一个 n×n 的矩阵 B=(bij​)n×n​,其中

bij​={1,i 可以直接或间接到达 j0,i 无法直接或间接到达 j​

输入格式

输入数据共 n+1 行。

第一行一个正整数 n。

第 2 到 n+1 行每行 n 个整数,第 i+1 行第 j 列的整数为 aij​。

输出格式

输出数据共 n 行。

第 1 到 n 行每行 n 个整数,第 i 行第 j 列的整数为 bij​。

输入输出样例

输入 #1复制

4
0 0 0 1
1 0 0 0
0 0 0 1
0 1 0 0

输出 #1复制

1 1 0 1
1 1 0 1
1 1 0 1
1 1 0 1

说明/提示

对于 100% 的数据,1≤n≤100,保证 aij​∈{0,1} 且 aii​=0。

代码实现:

#include<cstdio>
// 快速输入函数
inline int input();
// 快速输出函数
inline void output(int num);
// 最大节点数量
const int MAX_NODE = (int)1e2 + 5;
// 邻接矩阵,用于存储传递闭包
int graph[MAX_NODE][MAX_NODE];

int main(int argc, char**argv) {
#ifndef ONLINE_JUDGE
// 本地调试时的文件输入输出
freopen("7909.in", "r", stdin);
freopen("7909.out", "w", stdout);
#endif
// 读取节点数量
register int nodeCount = input();

// 读取邻接矩阵
for (register int i = 1; i <= nodeCount; ++i) {
for (register int j = 1; j <= nodeCount; ++j) {
graph[i][j] = input();
}
}

// Floyd-Warshall算法计算传递闭包
// 通过中间节点midNode更新可达性
for (register int midNode = 1; midNode <= nodeCount; ++midNode) {
for (register int startNode = 1; startNode <= nodeCount; ++startNode) {
for (register int endNode = 1; endNode <= nodeCount; ++endNode) {
// 如果startNode可达midNode且midNode可达endNode,则startNode可达endNode
if (graph[startNode][midNode] && graph[midNode][endNode]) {
graph[startNode][endNode] = 1;
}
}
}
}

// 输出传递闭包矩阵
for (register int i = 1; i <= nodeCount; ++i, putchar('\n')) {
for (register int j = 1; j <= nodeCount; ++j) {
output(graph[i][j]);
putchar(' ');
}
}

return 0;
}

// 快速输入实现
inline int input() {
register char ch = getchar();
register int value = 0;
register int sign = 1;

// 处理符号
for (; ch < '0' || ch > '9'; ch = getchar()) {
if (ch == '-') {
sign = -1;
}
}

// 处理数字
for (; ch >= '0' && ch <= '9'; ch = getchar()) {
value = (value << 1) + (value << 3) + (ch & 15);
}

return value * sign;
}

// 快速输出实现
inline void output(int num) {
if (num < 0) {
putchar('-');
num = -num;
}
if (num / 10) {
output(num / 10);
}
putchar(num % 10 + '0');
}

http://www.dtcms.com/a/533895.html

相关文章:

  • 郑州区块链数字钱包网站开发过程西宁设计网站
  • WordPress全站展示建网站一般多少钱
  • 自己做的网站发布详细步骤深圳网站设计报价
  • 做咖啡网站网站域名过期怎么办
  • 车机系统资源性能测试
  • 宁波免费网站建站模板软文营销的技巧有哪些?
  • 商务网站建设的流程网站网站是怎么建设的
  • 网站建设与管理书宁波网站建设运营
  • 网站建设教育自己开网站怎么开
  • phpcms v9网站上传石景山企业网站建设
  • 【系统分析师】高分论文:论信息系统开发方法及应用(电子商务门户网站系统)
  • HTML02 核心语法与基础标签:构建静态页面的基石
  • TPC-C是一个在线事务处理(OLTP)基准测试标准
  • Ackermann(阿克曼)函数
  • 常见的手机网站湖北网站设计公司
  • 企业建站系统下载做网站推广的联系方式
  • 各种通信(五):IIC协议(二)
  • 做gif网站用模板怎么做网站
  • 【Java面试笔记:多线程】44、深入Java线程池:BlockingQueue实现全景解析与实战指南
  • 网站建设怎么找到客户做传销网站违法的吗
  • 船山网站建设排版漂亮的网站
  • 网站域名有什么用中国优化网
  • 【Research】MagicFuzzer: Scalable deadlock detection for large-scale applications
  • 【SpringBoot从初学者到专家的成长23】使用SpringBoot构建高效的Web应用-拥抱你的第一个SpringBoot项目
  • 郑州网络推广代理顾问seo公司 引擎
  • 网站首页图怎么做郑州中航软件开发有限公司
  • 做网站如何添加表单高端网约车收入怎么样
  • 具身智能π0.5(pi0.5)模型介绍
  • 阿里巴巴网站怎么做才能排第一第三次网站建设的通报
  • 智能网站建设维护ui界面设计案例分析