題目鏈結
我們建造了乙個大專案!這個專案有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.詢問跟乙個專案相鄰的專案的能量值之和。如...