Ranking the Cows(Floyd+位运算)
[USACO 2007 Mar G]Ranking the Cows
题目链接:Ranking the Cows
考点:Floyd+位运算
题意:给出m条比较关系,求还需要几条比较,才能排序好n个数
思路比较好想:
- f[i][j]表示i是否大于j
- 用Floyd变形算法来更新所有的F[i][j]
代码部分:
bitset<1009> a[1009];
void slove(){
int n,m;
cin>>n>>m;
int x,y;
rep(i,1,m){
cin>>x>>y;
a[x][y]=1;
}
rep(k,1,n)
rep(i,1,n){
if(a[i][k])a[i]|=a[k];//如果i大于k,那么i>所有k大于的点。
}
int ans=0;
rep(i,1,n){
for(int j=i+1;j<=n;j++)
if(a[i][j]==0&&a[j][i]==0)ans++;//如果既不知道i是否大于j也不知道j是否大于i,就要比较一次
}
cout<<ans;
}

浙公网安备 33010602011771号