0
点赞
收藏
分享

微信扫一扫

【YBTOJ进阶训练指导】比较大小【Floyd传递闭包】

水墨_青花 2022-02-23 阅读 37

在这里插入图片描述

直接Floyd传递闭包

c o d e code code

#include<iostream>
#include<cstdio>

using namespace std;

int n, m, q;
bool f[110][110];

int main()
{
	scanf("%d%d%d", &m, &n, &q);
	for(int i=1; i<=m; i++)
	{
		int x, y;
		scanf("%d%d", &x, &y);
		f[x][y]=1;
	}
	for(int k=1; k<=n; k++)
		for(int i=1; i<=n; i++)
			for(int j=1; j<=n; j++)
				f[i][j]=f[i][j]||(f[i][k]&&f[k][j]);
	for(int i=1; i<=n; i++)
		for(int j=1; j<=n; j++)
			if(f[i][j]&&f[j][i])
			{
				printf("10000words to copy");
				return 0;
			}
	while(q--)
	{
		int x, y;
		scanf("%d%d", &x, &y);
		if(f[x][y])
			printf("YES\n");
		else if(f[y][x])
			printf("NO\n");
		else printf("DK\n");
	}
	return 0;
}
举报

相关推荐

0 条评论