題目要求:
給定乙個計算機網路以及機器的雙向連線列表,每一條連線允許兩端的計算機進行直接的檔案傳輸,其他計算機間若存在一條連通路徑,也可以進行間接的檔案傳輸,請寫程式判斷,任意指定兩台計算機,它們之間是否可以進行檔案傳輸?
輸入要求:
輸入由若干組測試資料組成。對於每一組測試資料,第1行包含乙個整數n(<=10000),即網路中計算機的總台數,因而每台計算機可用1到n之間的乙個正數表示。接下來的幾行輸入格式為i c1 c2或者c c1 c2或s,其中c1和c2是兩台計算機的序號,i表示在c1和c2間輸入一條連線,c表示檢查c1和c2間是否可以傳輸檔案,s表示該組測試結束。
當n為0時,表示全部測試結束,不要對該資料做任何處理。
輸出要求:
對每一組c開頭的資料,檢查c1和c2間是否可以傳輸檔案,若可以,則在一行中輸出「yes」,否則輸出「no」。
當讀到s時,檢查整個網路。若網路中任意兩機器間都可以傳輸檔案,則在一行中輸出「the network is connected.」,否則輸出「there are k components.」其中k是網路中連通集的個數。
#include using namespace std;
int a[10001],b[10001];
int find(int x)
void unio(int r1,int r2)//合併時進行路徑壓縮
else
}int main()
cout<<"請輸入操作:"<>c)
cout<<"請輸入操作:"<>u>>v;
r1=find(u);
r2=find(v);
if(r1!=r2)
cout<<"no"<
並查集 檢查網路
問題描述 給定乙個計算機網路以及機器間的雙向連線列表,每一條連線允許兩端的計算機進行直接的檔案傳輸,其他計算機間若存在一條連通路徑,也可以進行間接的檔案傳輸。請寫出程式判斷 任意指定兩台計算機,它們之間是否可以進行檔案傳輸?輸入要求 輸入若干測試資料組成。對於每一組測試,第1行包含乙個整數n 100...
資料結構大作業 並查集 檢查網路
11 並查集 檢查網路 問題描述 給定乙個計算機網路以及機器間的雙向連線列表,每一條連線允許兩端的計算機進行直接的檔案傳輸,其他計算機間若存在一條連通路徑,也可以進行間接的檔案傳輸。請寫出程式判斷 任意指定兩台計算機,它們之間是否可以進行檔案傳輸?輸入要求 輸入若干測試資料組成。對於每一組測試,第1...
並查集 並查集
本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...