• A. Learning Languages (联通块)


    题目链接:http://codeforces.com/problemset/problem/277/A

    题目大意:

    n个人,每个人会一些语言,两个人只要有会一门相同的语言就可以交流,问为了让这n个人都交流,至少还得学多少门语言

    思路:

    先根据n个人之间他们会的语言,建边

    再dfs找出有多少个联通块ans,再加ans-1条边就可以让他们连通

    注意特判一下每个人都会0门语言的情况

    AC代码:

     1 #include <cstdio>
     2 #include <string>
     3 #include <iostream>
     4 #include <algorithm>
     5 #include <string.h>
     6 #include <math.h>
     7 #include <vector>
     8  
     9 using namespace std;
    10  
    11 int vis[105];
    12 int mapp[105][105];
    13 int a[105][105];
    14 int n,m,k,val;
    15  
    16 void dfs(int i)
    17 {
    18     vis[i] = 1;
    19     for (int j=1;j<=n;j++)
    20     {
    21         if (!vis[j] && mapp[i][j])
    22             dfs(j);
    23     }
    24 }
    25  
    26 int main()
    27 {
    28     int tot = 0;
    29     int ans = 0;
    30     cin >> n >> m;
    31     for (int i=1;i<=n;i++)
    32     {
    33         cin >> k;
    34         if (k == 0)
    35             tot++;
    36         while (k--)
    37         {
    38             cin >> val;
    39             a[i][val] = 1;
    40         }
    41     }
    42     for (int i=1;i<=n;i++)
    43     {
    44         for (int j=i+1;j<=n;j++)
    45         {
    46             for (int o=1;o<=m;o++)
    47             {
    48                 if (a[i][o] && a[j][o])
    49                     mapp[i][j] = mapp[j][i] = 1;
    50             }
    51         }
    52     }
    53     for (int i=1;i<=n;i++)
    54     {
    55         if (!vis[i])
    56         {
    57             ans++;
    58             dfs(i);
    59         }
    60     }
    61     if (tot == n)
    62         printf("%d
    ",n);
    63     else
    64         printf("%d
    ",ans-1);
    65     return 0;
    66 }
    67  

    之前就做了一道联通块的题目,再经过这道题我觉得再遇到联通块的题目应该就可以快速想到了!

  • 相关阅读:
    (二)unittest之跳过测试和预期失败的用例
    (一)基本使用
    python从入门到入魔
    (十)中断测试
    (九)进程测试
    (八)安装、卸载与升级更新测试
    (七)功能测试
    (六)内存分析,待补充
    (五)跑Monkey过程中出现的ANR问题分析
    (四)一种精准monkey测试的方法
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/11174402.html
Copyright © 2020-2023  润新知