离散题目18 求传递闭包 warshell算法
来源:互联网 发布:淘宝客户数据分析 编辑:程序博客网 时间:2024/05/20 05:11
Problem Description
给出一个集合A和A上的关系R,求关系R的传递闭包。
例如:
A={0,1,2} , R={<0,0>,<1,0>,<2,2>,<1,2>,<2,1>}
t(R) = {<0,0>,<1,0>,<2,2>,<2,1>,<1,2>,<1,1>,<2,0>};
Input
多组输入,输入n、m,集合A={0, 1, …, n-1 };m代表关系的数量,n、m不超过20.
Output
每组输入输出t(R),根据t(R)中序偶的第一个数字升序排序,如果第一个数字相同,根据第二个升序排序。
Example Input
3 5
0 0
1 0
2 2
1 2
2 1
Example Output
0 0
1 0
1 1
1 2
2 0
2 1
2 2
代码如下
#include<stdio.h>#include<string.h>int a[110][110];void warshell(int n){ int k ,i,j ; for(i = 0;i<n;i++) { for(j = 0;j<n;j++) { if(a[j][i]==1) { for(k = 0;k<n;k++) { a[j][k] = a[j][k]+a[i][k]; if(a[j][k]>=1) a[j][k] = 1; } } } }}int main(){ int m ,n,x,y,i,j; while(scanf("%d %d",&n,&m)!=EOF) { memset(a,0,sizeof(a)); while(m--) { scanf("%d %d",&x,&y); a[x][y] = 1; } warshell(n); for(i = 0;i<n;i++) { for(j = 0;j<n;j++) { if(a[i][j]) printf("%d %d\n",i ,j); } } } return 0;}
阅读全文
0 0
- 离散题目18 求传递闭包 warshell算法
- 传递闭包 -》Warshell算法
- 离散题目18--求传递闭包
- 离散题目18(传递闭包)
- 离散题目17--求对称闭包
- 传递闭包,离散
- Warshall算法求传递闭包
- 离散题目17 对称闭包
- Floyd算法求图的传递闭包
- 一种离散数学中求传递闭包的算法实现
- War-shall 算法 【求传递闭包】 离散数学记录
- 求传递闭包Warshall算法代码实现
- nyoj 211 (Floyd算法求传递闭包)
- Floyd-Warshall算法求矩阵的传递闭包
- Floyd求传递闭包
- floyd求传递闭包
- floyd求传递闭包
- floyd 求传递闭包
- Easyui 分页 官方文档修改后很容易懂
- vue调用百度地图api时Bmap没有定义的解决办法
- centOS重装mariadb
- hue 设置中文
- LeetCode 40 Combination Sum II
- 离散题目18 求传递闭包 warshell算法
- 01--------php安装
- 这么多连麦方案,到底哪种适合你?
- vm(virtual option)选项
- shell中$(( )) 与 $( ) 还有${ }的区别
- cron: can’t lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable
- poj 3292 Semi-prime H-numbers
- Microsoft SQL Server 遇到的奇怪的问题
- 测试代码引用