题意:N个人,每个人有a属性和b属性,如果一个人的a或者b大于另外一个人,我们说这个人可以打败那个人。且这种关系可以传递。对于每个人,输出他可以打败多少人。(保证每个a不相同,保证每个b不相同。

思路:对于a关系,我们按重小到大连边,b同理。然后每个点能到的点就是可以打败的点。即是缩点后乱搞。

(此题是图,而不是排序后的数据结构题。

#include<bits/stdc++.h>
#define pii pair<int,int>
#define F first
#define S second
using namespace std;
const int maxn=;
vector<int>G1[maxn],G2[maxn];
pii p1[maxn],p2[maxn];
int dfn[maxn],low[maxn],scc[maxn],scc_cnt,sz[maxn],ind[maxn];
int q[maxn],head,tail,times,ans[maxn],res[maxn],instk[maxn];
map<pii,int>mp;
void tarjan(int u)
{
instk[u]=; q[++head]=u;
dfn[u]=low[u]=++times;
for(int i=;i<G1[u].size();i++){
int v=G1[u][i];
if(!dfn[v]) {
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(instk[v])low[u]=min(low[u],dfn[v]);//无向图与有向图的区别
}
if(dfn[u]==low[u]){
scc_cnt++;
while(true){
int x=q[head--];
scc[x]=scc_cnt; sz[scc_cnt]++;
instk[x]=;
if(x==u) break;
}
}
}
int main()
{
int N,i,j;
scanf("%d",&N);
for(i=;i<=N;i++) scanf("%d%d",&p1[i].F,&p2[i].F),p1[i].S=p2[i].S=i;
sort(p1+,p1+N+);
sort(p2+,p2+N+);
for(i=;i<=N;i++) G1[p1[i].S].push_back(p1[i-].S);
for(i=;i<=N;i++) G1[p2[i].S].push_back(p2[i-].S);
for(i=;i<=N;i++) if(!dfn[i]) tarjan(i);
for(i=;i<=N;i++){
int L=G1[i].size();
for(j=;j<L;j++){
if(scc[i]!=scc[G1[i][j]]&&!mp[make_pair(scc[G1[i][j]],scc[i])]) mp[make_pair(scc[G1[i][j]],scc[i])]=,G2[scc[G1[i][j]]].push_back(scc[i]),ind[scc[i]]++;
}
}
head=tail=;
for(i=;i<=scc_cnt;i++) if(ind[i]==) q[++head]=i;
while(tail<head){
int u=q[++tail];
int L=G2[u].size();
for(j=;j<L;j++){
sz[G2[u][j]]+=sz[u];
if((--ind[G2[u][j]])==) q[++head]=G2[u][j];
}
}
for(i=;i<=N;i++) printf("%d\n",sz[scc[i]]-);
return ;
}

最新文章

  1. flex进行页面的基础布局
  2. 查看centos版本号
  3. 隐写-CTF中图片隐藏文件分离方法总结
  4. HTML5播放器实例
  5. Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
  6. 真人动作捕捉系统 for Unity
  7. 安全增强 Linux (SELinux) 剖析
  8. C++三种内存分配方式
  9. 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
  10. NGUI-学习笔记(2)一个项目需求
  11. MYSQL查询计划KEY_LEN
  12. Android Studio学习随笔-基本事件(点击)
  13. nginx、fastCGI、php-fpm关系梳理(转载参考)
  14. linux下so动态库一些不为人知的秘密(中)
  15. wsgi-restful-routes具体解释:
  16. UE4使用widget创建UI界面播放视频
  17. 10种linux下磁盘快照方式恢复系统
  18. mac打开文件提示文件已经坏了的修改
  19. STM32F10X-定时器/计数器
  20. WebAPI 抛出HttpResponseException异常

热门文章

  1. MongoDB可视化工具 Studio 3T
  2. Entity Framework(1)——Connections and Models
  3. poj1066(叉乘的简单应用)
  4. IntelliJ IDEA集成JProfiler,入门教程
  5. php自定义函数: 遍历文件夹及其子文件夹
  6. 我的Android进阶之旅------>关于调用Webservice查询火车票时刻表的几个接口介绍
  7. php验证复选框的小例子
  8. Data Structure Array: Maximum circular subarray sum
  9. 2018svn1
  10. 【leetcode刷题笔记】Longest Valid Parentheses