HDU 4858 專案管理(vector)

2021-09-10 09:20:20 字數 1521 閱讀 1581

題目鏈結

我們建造了乙個大專案!這個專案有n個節點,用很多邊連線起來,並且這個專案是連通的!

兩個節點間可能有多條邊,不過一條邊的兩端必然是不同的節點。

每個節點都有乙個能量值。

現在我們要編寫乙個專案管理軟體,這個軟體呢有兩個操作:

1.給某個專案的能量值加上乙個特定值。

2.詢問跟乙個專案相鄰的專案的能量值之和。(如果有多條邊就算多次,比如a和b有2條邊,那麼詢問a的時候b的權值算2次)。

input

第一行乙個整數t(1 <= t <= 3),表示測試資料的個數。

然後對於每個測試資料,第一行有兩個整數n(1 <= n <= 100000)和m(1 <= m <= n + 10),分別表示點數和邊數。

然後m行,每行兩個數a和b,表示a和b之間有一條邊。

然後乙個整數q。

然後q行,每行第乙個數cmd表示操作型別。如果cmd為0,那麼接下來兩個數u v表示給專案u的能量值加上v(0 <= v <= 100)。

如果cmd為1,那麼接下來乙個數u表示詢問u相鄰的專案的能量值之和。

所有點從1到n標號。

output

對每個詢問,輸出一行表示答案。

sample input

13 2

1 21 3

60 1 15

0 3 4

1 11 3

0 2 33

1 2sample output415

15使用暴力解法,但是無法定義乙個100000大小的二維陣列,所以想到使用vector容器,來代替二維陣列

先來看一下vector的使用和下標的訪問

#include

using namespace std;

//定義乙個相當於一維陣列的容器

vector <

int>b;

//定義乙個相當於二維陣列的容器

vector <

int>a[10]

;int

main()

下面是本題**

#include

#include

#include

#include

#include

#define n 100100

using namespace std;

vector <

int>g[n]

;int c[n]

;int

main()

scanf

("%d"

,&q)

;memset

(c,0

,sizeof

(c))

;while

(q--

)else

printf

("%d\n"

,s);}}

}return0;

}

HDU 4858 專案管理

我們建造了乙個大專案!這個專案有n個節點,用很多邊連線起來,並且這個專案是連通的!兩個節點間可能有多條邊,不過一條邊的兩端必然是不同的節點。每個節點都有乙個能量值。現在我們要編寫乙個專案管理軟體,這個軟體呢有兩個操作 1.給某個專案的能量值加上乙個特定值。2.詢問跟乙個專案相鄰的專案的能量值之和。如...

hdu 4858專案管理 分塊

知識點 graph分塊 hdu 4858專案管理 有n 個頂點m條邊的無向圖。有 q 次操作 操作一 將所有與 u相連的頂點權值加 v 操作二 查詢頂點 u的權值。資料範圍 1 n 100000,1 m n 10,0 v 100 分塊的一道比較好的題目吶。首先,觀察題目,給定的是乙個明顯的稀疏圖。邊...

hdu 4858 專案管理 分塊

我們建造了乙個大專案!這個專案有n個節點,用很多邊連線起來,並且這個專案是連通的!兩個節點間可能有多條邊,不過一條邊的兩端必然是不同的節點。每個節點都有乙個能量值。現在我們要編寫乙個專案管理軟體,這個軟體呢有兩個操作 1.給某個專案的能量值加上乙個特定值。2.詢問跟乙個專案相鄰的專案的能量值之和。如...