题目描述:

众所周知,TT 有一只魔法猫。这一天,TT 正在专心致志地玩《猫和老鼠》游戏,然而比赛还没开始,聪明的魔法猫便告诉了 TT 比赛的最终结果。TT 非常诧异,不仅诧异于他的小猫咪居然会说话,更诧异于这可爱的小不点为何有如此魔力?魔法猫告诉 TT,它其实拥有一张游戏胜负表,上面有 N 个人以及 M 个胜负关系,每个胜负关系为 A B,表示 A 能胜过 B,且胜负关系具有传递性。即 A 胜过 B,B 胜过 C,则 A 也能胜过 C。TT 不相信他的小猫咪什么比赛都能预测,因此他想知道有多少对选手的胜负无法预先得知,你能帮帮他吗?

input:

第一行给出数据组数。每组数据第一行给出 N 和 M(N , M <= 500)。接下来 M 行,每行给出 A B,表示 A 可以胜过 B。

output:

对于每一组数据,判断有多少场比赛的胜负不能预先得知。注意 (a, b) 与 (b, a) 等价,即每一个二元组只被计算一次。

思路:

抽象成图论问题,n个点表示n个选手,给出m对关系,每对关系输入a,b,表示选手a能战胜选手b,在图中表现为a到b有一条有向边,边权为1。由于胜负关系具有传递性,A胜B,B胜C,则A胜C。考虑floyed算法,三层循环,最外层枚举k,表示中间点即前面说的点B。第二层枚举i表示起始点,即前面说的点A,最内层枚举j表示终点,即前面说的C,若a[i][k]==1,且a[k][j]==1,则更新a[i][j]=1。

由于当a[i][k]或者a[k][j]任意一个为0时表示胜负关系未知,即使循环也是无效的,因此可剪枝来优化算法。

最终枚举矩阵的右上角(不包括对角线元素),统计答案。

#include<iostream>
#include<cstring>
using namespace std;
int n,m,ans,a[510][510];
int main()
{int T,x,y;cin>>T;while(T--){cin>>n>>m;ans=0;memset(a,0,sizeof(a));for(int i=1;i<=m;i++){cin>>x>>y;a[x][y]=1;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)if(a[i][k])//剪枝 for(int j=1;j<=n;j++)if(a[k][j]){a[i][j]=1;}for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)//虽然枚举右上角,但还是要考虑左下角的对称元素。 if(!a[i][j]&&!a[j][i]) ans++;cout<<ans<<endl;}
}

程序设计思维与实践 Week7 作业 A TT的魔法猫相关推荐

  1. 【20200401程序设计思维与实践 Week7作业】

    目录 A - TT 的魔法猫 题意 思路 总结 代码 B - TT 的旅行日记 题意 思路 总结 代码 C - TT 的美梦 题意 思路 总结 代码 A - TT 的魔法猫 题意 众所周知,TT 有一 ...

  2. SDU 程序设计思维与实践 week7 B TT 的旅行日记【Dijkstra】

    B TT 的旅行日记 题意描述 众所周知,TT 有一只魔法猫 今天他在 B 站上开启了一次旅行直播,记录他与魔法猫在喵星旅游时的奇遇. TT 从家里出发,准备乘坐猫猫快线前往喵星机场.猫猫快线分为经济 ...

  3. 山东大学程序设计思维与实践 四月模拟:TT与可怜的猫

    4月模拟-TT与可怜的猫 程序设计思维实践-复杂模拟题训练2 山东大学计算机科学与技术学院程序设计思维与实践 sdu程序设计思维与实践 山东大学程序设计思维实践作业 山大程序设计思维实践 山东大学程序 ...

  4. 程序设计思维与实践 Week9 作业三道

    A - 咕咕东的目录管理器 题面 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响,时不时发生故障,他受不了了,想要写一个高效易用零bug的操作系统 -- 这工程量太大了,所以他定了一个小目标,从 ...

  5. 程序设计思维与实践 Week8 作业 B 猫猫向前冲

    题目描述: 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所 ...

  6. 程序设计思维与实践 Week8 作业 B - 猫猫向前冲

    问题描述 众所周知, TT 是一位重度爱猫人士,他有一只神奇的魔法猫. 有一天,TT 在 B 站上观看猫猫的比赛.一共有 N 只猫猫,编号依次为1,2,3,-,N进行比赛.比赛结束后,Up 主会为所有 ...

  7. 程序设计思维与实践 Week9 作业 A 咕咕东的目录管理器

    题目描述: 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响,时不时发生故障,他受不了了,想要写一个高效易用零bug的操作系统 -- 这工程量太大了,所以他定了一个小目标,从实现一个目录管理器开始 ...

  8. 程序设计思维与实践 Week8 作业 C - 班长竞选

    题目描述 大学班级选班长,N 个同学均可以发表意见 若意见为 A B 则表示 A 认为 B 合适,意见具有传递性,即 A 认为 B 合适,B 认为 C 合适,则 A 也认为 C 合适 勤劳的 TT 收 ...

  9. 程序设计思维与实践 Week9 作业 (3/4/数据班)

    A-咕咕东的目录管理器 题意: 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响,时不时发生故障,他受不了了,想要写一个高效易用零bug的操作系统 -- 这工程量太大了,所以他定了一个小目标,从实 ...

  10. 程序设计思维与实践Week9 作业 (1/2/智能班)

    A - 咕咕东的目录管理器 题面 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响,时不时发生故障,他受不了了,想要写一个高效易用零bug的操作系统 -- 这工程量太大了,所以他定了一个小目标,从 ...

最新文章

  1. 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...
  2. 听说你们找我很久了?
  3. vue-router路由示例
  4. TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
  5. 一个学者科研的感受,推荐一下(小木虫)
  6. ecshop php5.5分类文字不显示,在PHP5.5下ecshop修正文件报错归类
  7. C++开发工程师的薪资和未来发展
  8. 144hz和60hz测试软件,144hz显示器与60hz采集卡(等同于60hz显示器)复制画面后程序帧率异常...
  9. Xcode打包后,找不到dSYM文件
  10. 写了个算分压电阻阻值的MATLAB小程序
  11. win10修改dns服务器地址,教你Win10如何更改首选DNS服务器地址
  12. 微信小程序开发者工具出现Framework inner error错误
  13. 什么是3322域名?3322域名如何注册?
  14. 深度linux显示方块,在Deepin下用Wine运行文华财经赢顺的经验,附字体显示方框的解决...
  15. excel页码怎么设置从4开始?
  16. 编程计算1至50中是7倍数的数值之和
  17. 解决fileReader读取文件乱码
  18. 总结低代码海报平台编辑器难点
  19. 你可以穿裙子,但是请放长你的裙摆
  20. 深入浅出的 Adaboost算法

热门文章

  1. 中国近代史-蒋廷黻-笔记-第一章-剿夷与抚夷-第二节-英国人做鸦片买卖
  2. Reflex WMS入门系列二十四:拆托(HD Breakdown)
  3. ajax ruby,在Ruby on Rails中使用AJAX的教程
  4. 利用echart和echart-gl绘制江苏省的地图之二
  5. Cisco网站模块8-10网络间通信考试试题及答案
  6. h5支付不能打开支付宝 ios_iOS 手机网站支付转Native支付(H5支付页面调起支付宝客户端(app))...
  7. reg型变量怎么赋值_FPGA的wire和reg类型变量
  8. 人工智能发展将使人类沦落为“无用阶级”
  9. 应届大学毕业生户口迁移须知
  10. CentOS7安装Teamviewer