zoukankan      html  css  js  c++  java
  • Week6 作业 B

    题目描述:

    有n个学生,m个学生群体,其中有一个编号为0的学生感染了病毒,则只要是与0号学生直接接触或传递接触的人,都是The Suspects疑似病人,问有多少个疑似病人。

    思路:

    并查集。输入时,可以单独输入每个学生团体的第一个人,然后让后边的人都与第一个人进行合并。

    代码:

    (未使用重量规则)

     1 #include <cstdio>
     2 #include <iostream> 
     3 const int MAXN=1e5+5;
     4 using namespace std;
     5 int fa[MAXN];
     6 void init(int n)
     7 {
     8     for(int i=0;i<n;i++)
     9         fa[i]=i;
    10 }
    11 int find(int x)
    12 {
    13     if(fa[x]==x) return fa[x];
    14     fa[x]=find( fa[x] );
    15     return fa[x];
    16 }
    17 void unite(int x,int y)
    18 {
    19     int root1=find(x),root2=find(y);
    20     fa[root1]=root2;
    21 }
    22 int main()
    23 {
    24     int n,m;
    25     while( scanf("%d %d",&n,&m) && !(m==0 && n==0))
    26     {    
    27         init(n);
    28         for(int i=1;i<=m;i++)
    29         {
    30             
    31             int num,t2,t3; scanf("%d %d",&num,&t2);
    32             for(int j=2;j<=num;j++)
    33             {
    34                 scanf("%d",&t3);
    35                 unite(t2,t3);
    36             }
    37         }
    38         int ans=0;
    39         for(int i=0;i<n;i++)
    40         {
    41             if( find(i)==find(0) ) ans++;
    42         }
    43         cout<<ans<<endl;
    44     }    
    45 }
  • 相关阅读:
    filebeat测试output连通性
    es分片数相关知识
    Elasticsearch的mapping讲解
    Kibana插件
    Kibana管理
    Kibana控制台(Dev Tools) Console
    Kibana仪表盘(Dashboard)详解
    Kibana可视化数据(Visualize)详解
    Kibana探索数据(Discover)详解
    Kibana使用仪表盘汇总数据(Dashboard)
  • 原文地址:https://www.cnblogs.com/qingoba/p/12620185.html
Copyright © 2011-2022 走看看