首页 > 其他 > 详细

hdu 1704 Rank(floyd传递闭包)

时间:2017-03-03 19:12:16      阅读:342      评论:0      收藏:0      [点我收藏+]

题目链接:hdu 1704 Rank

题意:

有n个人,m场比赛,a与b打,每场都是awin,问不能确定其中两个人的win情况数。

题解:

floyd传递闭包,这里我用bitset优化了一下。

技术分享
 1 #include<bits/stdc++.h>
 2 #define F(i,a,b) for(int i=a;i<=b;++i)
 3 using namespace std;
 4 bitset<501>a[501];
 5 
 6 int n,m,t;
 7 
 8 int main(){
 9     scanf("%d",&t);
10     while(t--)
11     {
12         scanf("%d%d",&n,&m);
13         F(i,0,n)a[i].reset();
14         F(i,1,m)
15         {
16             int x,y;
17             scanf("%d%d",&x,&y);
18             a[x][y]=1;
19         }
20         F(k,1,n)F(i,1,n)if(a[i][k])a[i]|=a[k];
21         int ans=0;
22         F(i,1,n)F(j,i+1,n)if(!(a[i][j]||a[j][i]))ans++;
23         printf("%d\n",ans);
24     }
25     return 0;
26 }
View Code

 

hdu 1704 Rank(floyd传递闭包)

原文:http://www.cnblogs.com/bin-gege/p/6497966.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!