1090 危險品裝箱 25 分

2021-10-20 15:39:36 字數 1844 閱讀 3514

貨櫃運輸貨物時,我們必須特別小心,不能把不相容的貨物裝在乙隻箱子裡。比如氧化劑絕對不能跟易燃液體同箱,否則很容易造成**。

本題給定一張不相容物品的清單,需要你檢查每一張貨櫃貨品清單,判斷它們是否能裝在同一只箱子裡。

輸入格式:

輸入第一行給出兩個正整數:n (n≤1

04

n≤10^4

n≤10

4) 是成對的不相容物品的對數;m (m

≤100

m≤100

m≤10

0) 是貨櫃貨品清單的單數。

隨後資料分兩大塊給出。第一塊有 n 行,每行給出一對不相容的物品。第二塊有 m 行,每行給出一箱貨物的清單,格式如下:

k g[1] g[2] ... g[k]

其中 k (≤1000) 是物品件數,g[i] 是物品的編號。簡單起見,每件物品用乙個 5 位數的編號代表。兩個數字之間用空格分隔。

輸出格式:

對每箱貨物清單,判斷是否可以安全運輸。如果沒有不相容物品,則在一行中輸出 yes,否則輸出 no。

輸入樣例:

6 3

20001 20002

20003 20004

20005 20006

20003 20001

20005 20004

20004 20006

4 00001 20004 00002 20003

5 98823 20002 20003 20006 10010

3 12345 67890 23333

輸出樣例:

no

yesu

yes

思路整理

這個題目仍然考察stl庫的使用。從題意可以分析出,需要實現一種一對多的對映關係,並且在實現對映後完成查詢。

一開始寫的時候沒有考慮到存在一對多的對映,實現的時候用了map對映,結果顯然不對。

(解釋一下:比如在儲存對映a>>ba>>c的時候,用到了mp[a]=b; mp[a]=c;結果就是只能記住a的最後乙個對映c,b被覆蓋了。)

要想實現一對多的對映,可以借助map的公升級版multimap實現。

multimap專門實現一對多的對映,具體的操縱做簡單介紹:

貨物清單統計,每次放入set中,之後遍歷set,每次都查詢mmp中是否存在對映,如存在對映,則被對映的元素是否又在set集中,直到set最後乙個元素完成,期間可以增加標記為用來中斷操作,直接輸出。

ac例程

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

while

(m--

)for

(it=st.

begin()

,mark=

0;it!=st.

end(

)&&mark!=

1;it++)}

}}if(mark==

0)cout<<

"yes"

}return0;

}

1090 危險品裝箱(25 分)

1090 危險品裝箱 25 分 貨櫃運輸貨物時,我們必須特別小心,不能把不相容的貨物裝在乙隻箱子裡。比如氧化劑絕對不能跟易燃液體同箱,否則很容易造成 本題給定一張不相容物品的清單,需要你檢查每一張貨櫃貨品清單,判斷它們是否能裝在同一只箱子裡。輸入第一行給出兩個正整數 n 10 4 是成對的不相容物品...

1090 危險品裝箱 (25 分)

貨櫃運輸貨物時,我們必須特別小心,不能把不相容的貨物裝在乙隻箱子裡。比如氧化劑絕對不能跟易燃液體同箱,否則很容易造成 本題給定一張不相容物品的清單,需要你檢查每一張貨櫃貨品清單,判斷它們是否能裝在同一只箱子裡。輸入第一行給出兩個正整數 n 10 4 是成對的不相容物品的對數 m 100 是貨櫃貨品清...

1090 危險品裝箱 25 分

1090 危險品裝箱 25 分 貨櫃運輸貨物時,我們必須特別小心,不能把不相容的貨物裝在乙隻箱子裡。比如氧化劑絕對不能跟易燃液體同箱,否則很容易造成 本題給定一張不相容物品的清單,需要你檢查每一張貨櫃貨品清單,判斷它們是否能裝在同一只箱子裡。輸入第一行給出兩個正整數 n 10 4 是成對的不相容物品...