HDU 4858 專案管理

2022-08-25 10:30:33 字數 1355 閱讀 5109

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

第一行乙個整數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標號。

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

1

3 21 2

1 36

0 1 15

0 3 4

1 11 3

0 2 33

1 2

4

1515

這道題有點圖的樣子,前些時間在ljc大佬的指導下學習使用了vector模擬鄰接表,於是就用這種方法解決了這道題

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define inf 0x3f3f3f3f

using

namespace

std;

struct edge

;//儲存邊的資訊

vector

edge[100011];//二維陣列儲存每個頂點與其他頂點的關係

ll ans[100001];//儲存能量

intmain

() int q, cmd, u, v;

scanf_s("%d", &q);

for (int i = 1; i <= q; i++)

else

} for (int i = 0; i < n; i++)

edge[i].clear();

}}

hdu 4858專案管理 分塊

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

HDU 4858 專案管理(vector)

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

hdu 4858 專案管理 分塊

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