小韋老師 神犇營 my1076 鄰接表的使用

2021-10-01 10:22:34 字數 1309 閱讀 1834

這個題目我們來練習鄰接表的使用。給出乙個包含有向圖和無向圖的混合圖 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,並...