時間限制:1 s
空間限制:128 m
傳送門:
機房裡有若干臺電腦,其中有一些電腦已經相互連線。如果a和b通過網線相連,並且b與c也通過網線相連,那麼即便a和c之間沒有直接的網線相連,也可以認為a和c是相連的。由於機房裡的佈線比較亂,並不是所有電腦都相互連通,請問在不變動當前佈線情況下,最少要購買幾條網線才能使得機房所有電腦都兩兩連通。
多組資料。每組資料第一行為整數n,m。n是電腦數量,m是機房已布置好的網線數量。接下來m行,每行為整數a,b。表明a,b之間通過一條網線直接相連。這裡可以認為網線是不分方向的,即a->b等價於b->a。
(0 < n <= 200,0 <= m <= 10000,0 < a,b <= n 。) n=0和m=0為輸入結束,不需要處理。
每組乙個整數,即最少還要購買幾根網線。
4212234
0100
0
130
思路:用並查集儲存,若是連在一起的電腦就存到乙個集合裡面,最後判斷下有幾個集合,答案就是集合個數減一。在連線集合的時候設左邊為父結點。
**:
1 #include 2 #include 3 #include 45using
namespace
std;
6int fina(int
num);
7int n, m, a[2010];8
9int
main()
1025}26
int ans = 0;27
for (int i = 1; i <= n; i ++)
28if (a[i] == i) ans ++;
2930 cout << ans - 1
<31 cin >> n >>m;
33 memset(a,0,sizeof
(a));34}
35return0;
36}3738
int fina(int
num)
3946 }
ps:應該是安科 oj 資料的問題,題目說的 n <= 200,但是陣列開到210就會越界,開到2010才行(當時debug了好久,555~)
六 連線模式 1) 連線簡介
可以借用 sql 的連線來解釋 假設 表a 表b 內連線 a.name b.name 儲存共有的相同值屬性 外連線 左外連線 以 外來鍵表a 左 屬性為基準。包含a屬性整列。b屬性符合a屬性值的存入,其餘b屬性被置為 null。右外連線 以 外來鍵表b 右 屬性為基準。包含b屬性整列。b屬性符合a屬...
13 連線查詢
假設 a 表中有3條記錄,b表中有 4 條記錄 那麼,語句select from a,b 會將a,b兩張表的資料交叉拼接起來,形成 3 4 12 條記錄的結果集,此結果集叫做笛卡爾積。ora 00918 未明確定義列 改進辦法 明確列的所屬 select empno,ename,emp.deptno...
004 連線查詢
再大多數的情況下,我們都需要進行連線查詢.笛卡爾積的產生 這個就是多表查詢的的最初結果集,那麼以後我們需要作的就是從結果集中篩選出需要的結果集.篩選的方式不同,導致sql的效率不同.篩選的方式就是加入連線標準.等值連線 select 字段 from 表1 表2 where 連線條件.eg 查詢員工名...