Gym 101142C CodeCoder vs TopForces【思维+Dfs】
2017-10-03 16:03
351 查看
题目大意:
如果A>B,并且B>C,那么有A>C,现在A>B的条件是,A的两个元素中的至少一个大于B。
问一个人可以打败多少人。
思路:
①问题其实就是在找一个联通块,我们将元素按照x从小到大排序一下,然后相邻的两个点建一条边。
②然后在将元素按照y从小到大排序一下,然后相邻的两个点再建一条边。
然后每个点Dfs一下统计即可。
Ac代码:
#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
void fre() {
freopen("codecoder.in","r",stdin);
freopen("codecoder.out","w",stdout);
}
struct node
{
int x,y,pos;
}a[150000];
int ans[150000];
int vis[150000];
vector<int>mp[150000];
int n,cnt;
int cmp(node a,node b)
{
return a.x<b.x;
}
int cmp2(node a,node b)
{
return a.y<b.y;
}
void Dfs(int u)
{
cnt++;
vis[u]=1;
for(int i=0;i<mp[u].size();i++)
{
int v=mp[u][i];
if(vis[v]==0)
{
Dfs(v);
}
}
}
int main()
{
fre();
while(~scanf("%d",&n))
{
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)mp[i].clear();
for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y),a[i].pos=i;
sort(a+1,a+1+n,cmp);
for(int i=2;i<=n;i++) mp[a[i].pos].push_back(a[i-1].pos);
sort(a+1,a+1+n,cmp2);
for(int i=2;i<=n;i++) mp[a[i].pos].push_back(a[i-1].pos);
cnt=0;
for(int i=1;i<=n;i++)
{
if(vis[a[i].pos]==0)
{
Dfs(a[i].pos);
}
ans[a[i].pos]=cnt-1;
}
for(int i=1;i<=n;i++)printf("%d\n",ans[i]);
}
}
相关文章推荐
- 【离散化】【DFS】Gym - 101617H - Security Badges
- Codeforces Round #398(Div. 2)C. Garland【Dfs+思维】
- uva12166 dfs+思维
- 【CodeForces 525D】【dfs+思维】 Arthur and Walls 【只包含点和星的矩阵,需要将部分星变成点使点能组成矩形 】
- HDU 4272LianLianKan 2012长春网络赛F题(思维) 暴力,dfs可以水过,正解是状态压缩dp
- GYM 100801D Distribution in Metagonia【思维】
- 【HDU - 5927】 Auxiliary Set 【DFS +思维】
- HDU5527:Too Rich(DFS & 贪心 & 思维)
- POJ-2386 Lake Counting (思维+简单dfs)
- 【2-SAT】【DFS】【分类讨论】Gym - 101617K - Unsatisfying
- HDU 6060 RXD and dividing 思维 + dfs
- codeforces-Fox And Two Dots【DFS】(思维)
- 2017多校第4场 HDU 6073 Matching In Multiplication 拓扑排序,思维,DFS
- Codeforces 747D Persistent Bookcase【Dfs+思维】好题!好题!
- codeforces 395 D <思维,DFS想了半天超时>
- Codeforces 456 div2 A B ***D(思维题) ***E(二分/DFS/数论)
- Codeforces 782E Underground Lab【极限思维+Dfs】
- Gym - 100741B Personal programming language(dfs)
- UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
- CF--- PROBLEM 620 E 【思维 + DFS序 + 二进制状态】