這個題目我們來練習鄰接表的使用。給出乙個包含有向圖和無向圖的混合圖 g,圖上有 n 個點和 m 條邊,現在你需要使用鄰接表來儲存該混合圖 g 並按格式輸出鄰接表。
輸入第一行為兩個正整數 n 和 m (1 ≤ n, m ≤ 100),表示混合圖上的 n 個點和 m 條 邊。
接下來輸入 m 行,每行輸入三個整數 a, x, y (0 ≤ a ≤ 1,0 ≤ x, y < n),表示點 x 和點 y 之間有一條邊。如果 a = 0,則表示該邊為有向邊,如果 a = 1,則表示該邊為無向邊。
輸出鄰接表,輸出 n 行,第 i 行表示第 i 個點連線邊的情況,首先輸出 i,接著輸出 : ,然後輸出點 i 能到達的所有點的編號,邊關係中後出現的點先輸出。每個整數前有乙個空格,具體格式見樣例。
4 4
0 0 1
1 0 2
0 3 1
1 2 3
0: 2 1
1:2: 3 0
3: 2 1
整體思路:
考查圖用鄰接表儲存。用 vector 陣列作為鄰接表進行儲存,然後列舉每個 vector,進行倒序輸出即可。
主要步驟:
定義乙個 vector 陣列,作為鄰接表儲存圖
const int n = 110;
vectorg[n];
輸入 m 條邊的資訊:
int a, x, y;
for (int i = 0; i < m; i++)
}
列舉每個頂點,先輸出每個頂點的編號,列舉每個頂點 i 能到達的所有點,然後倒著輸出目標點的編號:
for (int i = 0; i < n; i++)
cout << endl;
}
思考
1°如果將 vector 陣列定義成區域性的,會怎麼樣呢?
2°為什麼要講 vector 的 size( ) 函式將其強制轉化為 int 型呢?
#include using namespace std;
// 定義乙個 vector 陣列,作為鄰接表儲存圖
const int n = 110;
vectorg[n];
int main()
}for (int i = 0; i < n; i++)
cout << endl;
}
return 0;
}
我是小韋老師,企者不立,跨者不行,每天進步一點點。 小韋老師 神犇營 my0049 登入驗證
描述 我們在登入 的時候需要驗證密碼是否正確。現在請你寫乙個程式來驗證登入密碼是否正確。密碼為 5 位數。本題的輸入共 5 行,前 4 行是存進去的 4 個密碼,第 5 行是需要驗證的密碼,需要驗證該密碼是否為存進去的第三個密碼,若是,則輸出 yes 否則輸出 no 輸入本題的輸入共 5 行,前 4...
小韋老師 神犇營 my0184 開關燈
假設有 n 盞燈 n 為不大於 5000 的正整數 從 1 到 n 按順序依次編號,初始時全部處於開啟狀態 有 m 個人 m 為不大於 n 的正整數 也從 1 到 m 依次編號。第乙個人 1 號 將燈全部關閉,第二個人 2 號 將編號為 2 的倍數的燈開啟,第三個人 3號 將編號為 3 的倍數的燈做...
小韋老師 神犇營 my0163 完全數
求正整數 2 和 n 之間的完全數 一行乙個數 完全數 因子之和等於它本身的自然數,如 6 1 2 3 輸入n 1 n 5000 一行乙個數,按由小到大的順序。76破題 考查因子的概念和自定義函式。因子意思是 a 能被 b 整除 a b 0 則說明 b 是 a 的因子。思路 1.首先定義變數 n,並...