zoukankan      html  css  js  c++  java
  • 1362:家庭问题(family)

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1362

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n, k;//按要求输入 
     4 int a, b;//按要求输入 
     5 int rel[105][105];//用于存储各个成员之间的关系 
     6 int vis[105];//记录是否被访问过 
     7 int que[10010];//定义队列 
     8 int f, r;//定义队首队尾 
     9 int fm_cnt, fm_num, fm_max;//存放答案  fm_num用于记录每个家庭成员个数 
    10 void pr() {//用于测试 
    11     for(int i=1; i<=n; i++) {
    12         cout<<i<<"-"<<vis[i]<<",";
    13     }
    14 }
    15 int main() {
    16     cin>>n>>k;
    17     while(k--) {
    18         cin>>a>>b;
    19         rel[a][b]=rel[b][a]=1;//关系是相互队 
    20         rel[a][a]=rel[b][b]=1;//自己与自己建立关系 
    21     }
    22     for(int i=1; i<=n; i++) {
    23         if(vis[i]==0) {//以未被访问队成员进行搜索 
    24             fm_cnt++;//每个未被访问队成员代表一个独立队家庭
    25             f=r=1;//初始化队列 
    26             que[r]=i;//入队 
    27             vis[i]=1;//更改访问状态 
    28             int fcnt=1;//初始化家庭成员个数 
    29             while(f<=r) {
    30                 int fq=que[f];//获得队首信息 
    31                 for(int j=1; j<=n; j++) {//遍历与每个成员是否存在关系 
    32                     if((rel[fq][j]==1 || rel[j][fq]==1 ) && vis[j]==0) {//确定关系是否合法且未被访问 
    33                         fcnt++;//增加家庭成员数量 
    34                         vis[j]=1;//更改访问状态 
    35                         r++;//队尾后移准备入队 
    36                         que[r]=j;//家庭成员入队 
    37                     }
    38                 }
    39                 f++;//队首出队 
    40             }
    41             fm_max=max(fcnt, fm_max);//更新最大值 
    42         }
    43     }
    44     cout<<fm_cnt<<" "<<fm_max;
    45 
    46     return 0;
    47 }
  • 相关阅读:
    OAuth 2.0理论
    mvvm
    js中使用new所做的事情
    使用vue实现图片上传插件
    控制元素滚动位置
    float属性
    确定节点直接的关系
    react 开发中的问题简记
    深复制浅复制
    HTML和CSS实现常见的布局
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/13762367.html
Copyright © 2011-2022 走看看