《算法筆記》9.6小節 數據結構專題(2)并查集 問題 C: How Many Tables

題目描述

Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strangers.

One important rule for this problem is that if I tell you A knows B, and B knows C, that means A, B, C know each other, so they can stay in one table.

For example: If I tell you A knows B, B knows C, and D knows E, so A, B, C can stay in one table, and D, E have to stay in the other one. So Ignatius needs 2 tables at least.

輸入

The input starts with an integer T(1<=T<=25) which indicate the number of test cases. Then T test cases follow. Each test case starts with two integers N and M(1<=N,M<=1000). N indicates the number of friends, the friends are marked from 1 to N. Then M lines follow. Each line consists of two integers A and B(A!=B), that means friend A and friend B know each other. There will be a blank line between two cases.

輸出

For each test case, just output how many tables Ignatius needs at least. Do NOT print any blanks.

樣例輸入?復制
2
6 4
1 2
2 3
3 4
1 48 10
1 2
2 3
5 6
7 5
4 6
3 6
6 7
2 5
2 4
4 3
樣例輸出?復制
3
2

題目大意:今天是 Ignatius 的生日,他邀請了很多朋友。Ignatius 想知道他至少需要多少張桌子。不是所有的朋友都互相認識,而并不是所有的朋友都想和陌生人呆在一起。如果 A 認識 B,B 認識 C,則 A、B、C 互相認識,他們可以呆在一張桌子上。如果 A 認識 B,B 認識 C,D 認識 E,則?A、B、C 可以呆在一張桌子上,而 D、E 必須呆在另一張桌子上。所以 Ignatius 至少需要 2 張桌子。

分析: 題目可以抽象為有n個點m條邊的無向圖,問有多少個連通分量。實際上和這一節的題目B一樣。

#include<algorithm>
#include <iostream>
#include  <cstdlib>
#include  <cstring>
#include   <string>
#include   <vector>
#include   <cstdio>
#include    <queue>
#include    <stack>
#include    <ctime>
#include    <cmath>
#include      <map>
#include      <set>
#define INF 0xffffffff
#define db1(x) cout<<#x<<"="<<(x)<<endl
#define db2(x,y) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<endl
#define db3(x,y,z) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<endl
#define db4(x,y,z,r) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#r<<"="<<(r)<<endl
#define db5(x,y,z,r,w) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#r<<"="<<(r)<<", "<<#w<<"="<<(w)<<endl
using namespace std;int main(void)
{#ifdef testfreopen("in.txt","r",stdin);//freopen("in.txt","w",stdout);clock_t start=clock();#endif //testint n,m,T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);int cnt=1;int citys[n+5]={0};for(int i=0;i<m;++i){int a,b;scanf("%d%d",&a,&b);if(citys[a]==0&&citys[b]==0)citys[a]=citys[b]=cnt,cnt++;else if(citys[a]==0&&citys[b]!=0)citys[a]=citys[b];else if(citys[a]!=0&&citys[b]==0)citys[b]=citys[a];else{int temp=citys[b];for(int i=1;i<=n;++i)if(citys[i]==temp)citys[i]=citys[a];}}sort(citys+1,citys+n+1);
//        for(int i=1;i<=n;++i)
//            printf("%d ",citys[i]);
//        printf("\n");int sum=1,num=citys[1];for(int i=2;i<=n;++i){if(citys[i]!=num||citys[i]==0)sum++,num=citys[i];}printf("%d\n",sum);}#ifdef testclockid_t end=clock();double endtime=(double)(end-start)/CLOCKS_PER_SEC;printf("\n\n\n\n\n");cout<<"Total time:"<<endtime<<"s"<<endl;        //s為單位cout<<"Total time:"<<endtime*1000<<"ms"<<endl;    //ms為單位#endif //testreturn 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71332.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CPU、SOC、MPU、MCU--詳細分析四者的區別

一、CPU 與SOC的區別 1.CPU 對于電腦&#xff0c;我們經常提到&#xff0c;處理器&#xff0c;內存&#xff0c;顯卡&#xff0c;硬盤四大部分可以組成一個基本的電腦。其中的處理器——Central Processing Unit&#xff08;中央處理器&#xff09;。CPU是一臺計算機的運算核…

Linux常用指令學習筆記

文章目錄 前言一、文件和目錄操作指令1. 文件操作2. 目錄操作 二、文件權限管理三、網絡相關指令四、系統管理指令五、文本編輯器基本操作 六、壓縮和解壓指令七、總結 前言 在當今的IT領域&#xff0c;Linux系統因其開源、穩定、安全等特性&#xff0c;廣泛應用于服務器、個人…

android studio通過 jni 調用第三方非標準 so庫

調用第三方的so方法&#xff0c;但這個so內的方法不是標準的jni方法。這就需要我們自己寫jni然后鏈接到第三方so庫&#xff0c;通過jni調用so庫中的方法。 1.簡述&#xff1a; 要先有第三方的so庫.so文件和編譯庫對應的.h頭文件 我們自己用 c/c 創建一個標準的so 庫,比如 my…

Spring(三)容器-注入

一 自動注入Autowire 代碼實現&#xff1a; package org.example.spring01.service;import org.springframework.stereotype.Service;Service public class UserService {}package org.example.spring01.controller;import lombok.Data; import lombok.ToString; import org.…

mac上最好的Python開發環境之Anaconda+Pycharm

為了運行修改 label-studio項目源碼&#xff0c;又不想在windows上運行&#xff0c;便在mac上開始安裝&#xff0c;開始使用poetry安裝&#xff0c;各種報錯&#xff0c;不是zip包解壓不了&#xff0c;就是numpy編譯報錯&#xff0c;pipy.org訪問出錯。最后使用anaconda成功啟動…

IDEA 接入 Deepseek

在本篇文章中&#xff0c;我們將詳細介紹如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek&#xff0c;讓你的 AI 編程助手更智能&#xff0c;提高開發效率。 一、前置準備 在開始之前&#xff0c;請確保你已經具備以下條件&#xff1a; 安裝了 JetBrains IDEA&…

前綴和矩陣

前綴和矩陣&#xff08;Prefix Sum Matrix&#xff09;是一種預處理技術&#xff0c;用于快速計算二維矩陣中任意子矩陣的元素和。其核心思想是通過提前計算并存儲每個位置左上角所有元素的和&#xff0c;將子矩陣和的查詢時間從暴力計算的 (O(mn)) 優化到 (O(1))。以下是構建前…

系統架構評估中的重要概念

(1)敏感點(Sensitivity Point) 和權衡點 (Tradeoff Point)。敏感點和權衡點是關鍵的架構 決策。敏感點是一個或多個構件(和/或構件之間的關系)的特性。研究敏感點可使設計人員 或分析員明確在搞清楚如何實現質量目標時應注意什么。權衡點是影響多個質量屬性的特性&#xff0c; …

SSL證書和HTTPS:全面解析它們的功能與重要性

每當我們在互聯網上輸入個人信息、進行在線交易時&#xff0c;背后是否有一個安全的保障&#xff1f;這時&#xff0c;SSL證書和HTTPS便扮演了至關重要的角色。本文將全面分析SSL證書和HTTPS的含義、功能、重要性以及它們在網絡安全中的作用。 一、SSL證書的定義與基本概念 S…

基于微信小程序的停車場管理系統的設計與實現

第1章 緒論 1.1 課題背景 隨著移動互聯形式的不斷發展&#xff0c;各行各業都在摸索移動互聯對本行業的改變&#xff0c;不斷的嘗試開發出適合于本行業或者本公司的APP。但是這樣一來用戶的手機上就需要安裝各種軟件&#xff0c;但是APP作為一個只為某個公司服務的一個軟件&a…

寶塔找不到php擴展swoole,服務器編譯安裝

1. 在php7.4中安裝swoole&#xff0c;但找不到這個擴展安裝 2. 服務器下載源碼解壓安裝 http://pecl.php.net/package/swoole 下載4.8.0版本 解壓到/www/server/php/74/下 3. 發現報錯問題&#xff1b; 更新一下依賴 yum update yum -y install gcc gcc-c autoconf libjpe…

大數據測試總結

總結測試要點&#xff1a; 參考產品文檔&#xff0c;技術文檔梳理以下內容 需求來源 業務方應用場景 數據源&#xff0c;數據格轉&#xff0c;數據產出&#xff0c;數據呈現方式&#xff08;數據消亡史&#xff09;&#xff0c;數據量級&#xff08;增量&#xff0c;全量&am…

React封裝通用Table組件,支持搜索(多條件)、篩選、自動序號、數據量統計等功能。未采用二次封裝調整靈活,包含使用文檔

封裝通用組件 一、封裝思想二、react代碼三、css代碼四、實現效果五、使用文檔 BasicTableModal 表格模態框組件1.組件簡介2.功能特點3.使用方法基礎用法寬度控制示例帶篩選功能搜索功能示例自定義單元格渲染 4.API 說明PropsColumn 配置項Filter 配置項 5.注意事項 一、封裝思…

React 中 useState 的 基礎使用

概念&#xff1a;useState 是一個React Hook&#xff08;函數&#xff09;&#xff0c;它允許我們向組件添加狀態變量&#xff0c;從而影響組件的渲染結果。 本質&#xff1a;和普通JS變量不同的是&#xff0c;狀態變量一旦發生變化&#xff0c;組件的視圖UI也會跟著變化&…

Html5學習教程,從入門到精通,HTML `<div>` 和 `<span>` 標簽:語法知識點與案例代碼(12)

HTML <div> 和 <span> 標簽&#xff1a;語法知識點與案例代碼 一、語法知識點 1. <div> 標簽 定義: <div> 是一個塊級元素&#xff0c;用于將文檔內容劃分為獨立的、可樣式化的部分。它本身沒有特定的語義&#xff0c;主要用于布局和分組。特點: 塊…

Hbase偽分布安裝教程,詳細版

注意Hbase版本與Hadoop版本的兼容&#xff0c;還有與JDK版本的兼容 本次用到的Hbase為2.4.6版本&#xff0c;Hadoop為3.1.3版本&#xff0c;JDK為JDK8 打開下面的網址查看兼容問題 Apache HBase Reference Guidehttps://hbase.apache.org/book.html#configuration 點擊基礎先…

Python項目】基于Python的圖像去霧算法研究和系統實現

Python項目】基于Python的圖像去霧算法研究和系統實現 技術簡介&#xff1a;采用Python技術、MYSQL數據庫等實現。 系統簡介&#xff1a;圖像去霧系統主要是基于暗通道先驗和逆深度估計技術的去霧算法&#xff0c;系統功能模塊分為&#xff08;1&#xff09;圖像上傳模塊&…

Stable Diffusion Prompt編寫規范詳解

Stable Diffusion Prompt編寫規范詳解 一、語法結構規范 &#xff08;一&#xff09;基礎模板框架 [質量強化] [主體特征] [環境氛圍] [風格控制] [鏡頭參數]質量強化&#xff1a;best quality, ultra detailed, 8k resolution?主體特征&#xff1a;(1girl:1.3), long …

勿以危小而為之勿以避率而不為

《故事匯之&#xff1a;所見/所聞/所歷/所想》&#xff1a;《公園散步與小雨遇記》&#xff08;二&#xff09; 就差一點到山頂了&#xff0c;路上碰到一阿姨&#xff0c;她說等會兒要下大雨了&#xff0c;讓我不要往上走了&#xff0c;我猶豫了一會兒&#xff0c;還是聽勸地返…

wheel_legged_genesis 開源項目復現與問題記錄

Reinforcement learning of wheel-legged robots based on Genesis System Requirements Ubuntu 20.04/22.04/24.04 python > 3.10 開始配置環境&#xff01; 點擊releases后進入&#xff0c;下載對應最新版本的代碼&#xff1a; 將下載后的代碼包解壓到你的自定義路徑下&…