洛谷 P2097 資料分發1

2022-04-07 05:36:46 字數 752 閱讀 3303

有一些電腦,一部分電腦有雙向資料線連線。如果乙個電腦得到資料,它可以傳送到的電腦都可以得到資料。現在,你有這個資料,問你至少將其輸入幾台電腦,才能使所有電腦得到資料。

輸入格式:

第一行兩個數n,m。n是點數,m是邊數。

接下來m行,每行2個整數p,q表示p到q有一條雙向資料線。

輸出格式:

乙個整數,表示至少輸入的電腦數量。

輸入樣例#1: 複製

4 5

1 21 3

2 32 1

3 4

輸出樣例#1: 複製

1

對於30%的資料:n<=100,m<=1000

對於60%的資料:n<=2000,m<=100000

對於100%的資料:n<=100000, m<=200000

資料不保證沒有重邊,不保證沒有自回環

思路:並茶几

#include#include

#include

#include

using

namespace

std;

intn,m,ans;

int fa[100010],vis[100010

];int find(int

x)int

main()

for(int i=1;i<=n;i++)

if(!vis[find(i)])

cout

<}

P2097 資料分發1

題目描述 有一些電腦,一部分電腦有雙向資料線連線。如果乙個電腦得到資料,它可以傳送到的電腦都可以得到資料。現在,你有這個資料,問你至少將其輸入幾台電腦,才能使所有電腦得到資料。輸入格式 第一行兩個數n,m。n是點數,m是邊數。接下來m行,每行2個整數p,q表示p到q有一條雙向資料線。輸出格式 乙個整...

洛谷 P3372 線段樹 1

今天植樹節,來種一棵線段樹。傳送門如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數加上x 2.求出某區間每乙個數的和 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第 i 個數字表示數列第 i 項的初始值。接下來m行每...

洛谷P3374 樹狀陣列 1

乙個數列,滿足如下操作 給其中乙個數加x 求區間和 數列長度n,運算元m滿足1 n m 500000 1 n,m 500000 1 n m 5 0000 0樹狀陣列基礎支援這兩種操作,核心思想是將 1 i 的整體和分成許多個小的區間和,分割的條件是二進位制拆分。首先介紹乙個lowbit,意思是取到二...