有一些電腦,一部分電腦有雙向資料線連線。如果乙個電腦得到資料,它可以傳送到的電腦都可以得到資料。現在,你有這個資料,問你至少將其輸入幾台電腦,才能使所有電腦得到資料。
輸入格式:
第一行兩個數n,m。n是點數,m是邊數。
接下來m行,每行2個整數p,q表示p到q有一條雙向資料線。
輸出格式:
乙個整數,表示至少輸入的電腦數量。
輸入樣例#1: 複製
4 51 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,意思是取到二...