码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1704 Rank(floyd传递闭包)

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

标签:技术分享   pen   blank   bitset   blocks   span   题目   pid   turn   

题目链接: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传递闭包)

标签:技术分享   pen   blank   bitset   blocks   span   题目   pid   turn   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!