zoukankan      html  css  js  c++  java
  • 2832 6个朋友

    2832 6个朋友

     

    时间限制: 1 s
    空间限制: 128000 KB
    题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    有这么一种说法:认识6个人,你就认识全世界的人。

    Aiden现在有一张关系图,上面记载了N个人之间相互认识的情况。Aiden想知道,他能否只认识6个人就能间接认识这N个人呢?

    输入描述 Input Description

    第一行,两个数N,M,表示有N个人,M对认识关系。

    接下来的M行,每行两个数ai,bi,表示ai与bi相互认识。

    不保证认识关系不出现重复,保证ai≠bi。

    N个人的编号为1...N。

    输出描述 Output Description

    若只认识6个人就能间接认识这N个人,则输出“^_^”。

    若不行,则第一行输出“T_T”,第二行输出认识6个人最多能间接认识的人的个数。

    输出不包括引号。

    样例输入 Sample Input

    6 7

    1 2

    1 3

    2 4

    3 5

    4 6

    5 6

    3 2

    样例输出 Sample Output

    ^_^

    数据范围及提示 Data Size & Hint

    对于30%的数据,保证0<n≤1000。

    对于50%的数据,保证0<n≤5000。

    对于100%的数据,保证0<n≤10000,m≤10*n。

    思路:并查集找出相同祖先的点,统计祖先有多少。

    若小于6,可以;大于6,统计人数。

     1 #include<iostream>
     2 using namespace std;
     3 #include<cstdio>
     4 #include<algorithm>
     5 int far[10010],num[10010];
     6 int ans,sum,c,n,m;
     7 bool cmp(int a,int b)
     8 {
     9     return a>b;
    10 }
    11 int find(int a)
    12 {
    13     if(a!=far[a])far[a]=find(far[a]);
    14     return far[a];
    15 }
    16 int main()
    17 {
    18     cin>>n>>m;
    19     for(int i=1;i<=n;++i)far[i]=i;
    20     for(int a,b,i=1;i<=m;++i)
    21     {
    22         scanf("%d%d",&a,&b);
    23         int r=find(a);
    24         int rr=find(b);
    25         if(r!=rr)far[rr]=r;
    26     }
    27     for(int i=1;i<=n;++i)
    28     {
    29         int r=find(i);
    30         if(r==i)ans++;
    31         num[r]++;
    32     }
    33     if(ans<=6)cout<<"^_^";
    34     else if(ans>6)
    35     {
    36         sort(num+1,num+n+1,cmp);
    37         for(int i=1;i<=6;++i)
    38         {
    39             sum+=num[i];
    40         }
    41         cout<<"T_T"<<endl<<sum;
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    [OpenJudge90][序列DP+乱搞]滑雪
    [OpenJudge8786][暴力DP]方格取数
    [OpenJudge8782][划分DP]乘积最大
    [OpenJudge8471][划分DP]切割回文
    [OpenJudge8462][序列DP]大盗阿福
    【棋盘DP】【OpenJudge7614】最低通行费
    【OpenJudge8464】【序列DP】股票买卖
    bzoj1674: [Usaco2005]Part Acquisition 裸dijkstra
    bzoj3040 最短路+配对堆优化
    poj1330|bzoj3732|noip2013 货车运输 kruskal+倍增lca
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6722815.html
Copyright © 2011-2022 走看看