ZCMU--1740: 关系推断(Floyd求传递性)

这篇具有很好参考价值的文章主要介绍了ZCMU--1740: 关系推断(Floyd求传递性)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Description

给你一些已经确定的元素之间的关系,请你判断是否能从这些元素关系中推断出其他的元素关系。

Input

输入的第一行是一个整数N,表示测试数据的组数。
每组输入首先是一个正整数m(m<=100),表示给定元素关系的个数。
接下来m行,每行一个元素关系,格式为:
元素1<元素2  或者  元素1>元素2
元素用一个大写字母表示,输入中不会包含冲突的关系。

Output

对于每组输入,第一行输出“Case d:”,d是测试数据的序号,从1开始。
接下来输出所有推断出的新的元素关系,按照字典序从小到大排序,格式为:
元素1<元素2
每个元素关系占一行,输入中给定的元素关系不要输出。
如果没有新的元素关系推断出来,则输出NONE。

Sample Input

2
3
A<B
C>B
C<D
2
A<B
C<D

Sample Output

Case 1:
A<C
A<D
B<D
Case 2:
NONE

前置知识:Floyd算法求两点之间最短距离,此题中如果两点之间距离不是正无穷,那么表示可达,也就是传递的意思。

解析:x<y就将ok[x][y]设为1,表示可达且x<y,x>y反一下即可,因为题中要求出现过的关系不再出现,那么记录一个vis[ ][ ]即可,跑一遍Floyd,然后两重循环判断两者中的关系。

注意:两重循环都需要从1开始,因为存在D<A这类的关系。文章来源地址https://www.toymoban.com/news/detail-463886.html

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=105;
int cas,ok[N][N];//cas测试编号,ok表示两者是否可达
bool vis[N][N];//表示是否已经出现过
void Floyd()
{
	for(int k=1;k<=26;k++)
		for(int i=1;i<=26;i++)
			for(int j=1;j<=26;j++)
				ok[i][j]=min(ok[i][j],ok[i][k]+ok[k][j]);
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		memset(ok,0x3f,sizeof ok);//多组初始化
		memset(vis,false,sizeof vis);
		int n;
		scanf("%d",&n);
		while(n--)
		{
			char str[5];
			scanf("%s",str);
			int x=str[0]-'A'+1,y=str[2]-'A'+1;
			if(str[1]=='<')//小于
			{
				ok[x][y]=1;
				vis[x][y]=true;
			}else//反一下
			{
				ok[y][x]=1;
				vis[y][x]=true;
			}
		}
		Floyd();
		bool flag=false;
		printf("Case %d:\n",++cas);
		for(int i=1;i<=26;i++)
		{
			for(int j=1;j<=26;j++)//需要从1开始
			{
				if(ok[i][j]!=0x3f3f3f3f&&!vis[i][j])//两者可达且没有被输出过
				{
					printf("%c<%c\n",i+'A'-1,j+'A'-1);
					vis[i][j]=true;
					flag=true;
				}
			}
		}
		if(!flag) printf("NONE\n");
	}
	return 0;
}

到了这里,关于ZCMU--1740: 关系推断(Floyd求传递性)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZCMU_1117

    / 相当于看墙,投影之类的东西让我数多少个建筑物 / 解释感觉还不到位,以后再看看 先强调这不是我原创的,只是加了注释。找到原作者后会加链接。以及改变布局

    2024年03月23日
    浏览(26)
  • Vue前端框架10 组件的组成、组件嵌套关系、组件的注册方式、组件传递数据(props $emit)、数组传递多种数据类型、组件传递props校验、组件事件

    组件最大的优势就是可复用性 通常将组件定义在.vue中,也就是SFC单文件组件 组件的基本组成: 组件允许我们将UI划分为独立的、可重用的部分,并且对每个部分单独思考 实际应用中组件常常被组件成层层嵌套的树状结构 Vue组件使用前要注册,注册有两种方式:全局注册和

    2024年02月09日
    浏览(48)
  • HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包

    用于解决这类问题: 举例一、  举例二、(求传递闭包)   代码如下:

    2024年02月11日
    浏览(46)
  • Postman Post请求四种参数传递方式与Content-Type对应关系

    Postman post 请求四种数据传递类型代表的Content-Type类型: 1、form-data : 对应的Content-Type:multipart/form-data;boundary= 表示文件上传; 2、x-www-form-urlencoded:对应的Content-Type:application/x-www-form-urlencoded 表示表单提交; 3、raw:对应的Content-Type分为五类: 4、binary:对应的Content-Type:ap

    2024年02月05日
    浏览(53)
  • 因果推断(六)基于微软框架dowhy的因果推断

    DoWhy 基于因果推断的两大框架构建: 「图模型」 与 「潜在结果模型」 。具体来说,其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应;而在估计阶段则主要基于潜在结果框架中的方法进行估计。DoWhy 的整个因果推断过程可以划分为四大步骤: 「

    2024年02月10日
    浏览(32)
  • 关于“Loading PDSC Debug Description Failed”

    关于这个问题的弹窗报错网上也已经有了清晰的解决思路,就是更改软件目录下对应的.pdsc文件(譬如*/ARM/PACK/Keil/STM32F4XXXXXX/2.15.0/ Keil.STM32F4xx_DFP.pdsc )去掉该文件的只读属性,并根据Keil底部的build output内的提示找到对应行,删除该行的报错提示,保存文件。 Message(2, \\\"Not a

    2024年02月06日
    浏览(42)
  • dedecms织梦模板描述description长度限制修改方法

    seo优化各个搜索引擎收录Title,keywords,description长度最长多长 ? SEO网站优化中Title标签的作用为重中之重,好的Title也就成功了一半了。那么Title的长度到底多长才能合适呢? 搜索了一下网上的SEO资料,找到了一些关于各个搜索引擎对Title长度的要求,资料如下: 百度:60个字节

    2024年02月02日
    浏览(96)
  • <van-empty description=““ /> 滚动条bug

    使用 van-empty description=\\\"\\\" / 时,图片出现了个滚动条,图片可以上下滑动。 代码如下: 尝试将 van-empty 外层包一层view,然后设置该view的css样式 overflow: hidden 发现不起作用。 导致这个问题的主要原因应该是图片高度比其父视图高导致的。 打开Wxml调试查看视图层: 这里是一个

    2024年02月13日
    浏览(37)
  • ERROR:cannot load flash device description

    前言 :在移植他人 代码时,用keil5下载程序时有时会出现 cannot load flash device description的 问题,以下是解决方法: 此处,我是因为原本使用的是J-Link,改为ST-Link后,发生了报错。 通常,很多时候都是因为没有找到对应得flash 下载算法导致, 要选择正确的Flash Download 程序,型

    2024年02月09日
    浏览(40)
  • 因果推断阶段系列19[阶段2-1]-机器学习预测模型与因果推断

    因果推断的第一部分已经完成。该部分涵盖了因果推断的核心内容,相关的技术非常著名和成熟。第一部分为我们构建了可靠的基础。具体来说,第一部分重点介绍了因果推断的定义,以及避免将相关误认为因果的偏差、调整这些偏差的多种方法(如回归、匹配和倾向得分)

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包