10 15T2 生成樹 非樹邊暴力

2022-05-01 18:39:09 字數 3892 閱讀 2296

在這一切發生之前,學園都市表面看起來其實是非常平靜的。但僅僅只是表面而已。例如第五市場下面的地下街又傳來了嗶哩嗶哩的聲音,很顯然,這是電擊使在使用能力,而她的面前站著乙個抬起右臂的少年。為什麼放電妹要去攻擊刺蝟頭?通過御阪美琴,我們可以知道,刺蝟頭——上條當麻在大霸星祭的時候輸掉了和御阪美琴的賭約。

作為懲罰遊戲,上條當麻這一天要無條件接受美琴的所有條件。而上條當麻趁御阪美琴在辦理他們兩人的雙人通話**的一小會兒時間,又「勾搭」上了御阪妹。

在御阪妹和最後之作離開過後,御阪美琴拉著上條當麻去了地下街的遊戲廳。現在的美琴小姐十分氣氛,因為總有人來打擾她和上條當麻的私會。上條當麻現在也發現了這個問題,正在(被迫)想如何讓美琴開心。這時,一台嶄新的街機出現在他們面前,而最終大獎是乙個3公尺長的呱太玩偶。此時的美琴,早已準備躍躍欲試,可當麻卻突然擋在了他的面前,「這次就讓我來吧!(被迫)」

這台遊戲機裡面的遊戲是乙個十分無聊的遊戲:首先,螢幕上面會出現一張多個點多條無向邊的圖,兩點之間最多隻會有一條邊,且這張地圖是不會有自環的。每條邊的權值也標在了圖上。每一關,螢幕上會給出兩點,讓你在三秒之內答出這兩點之間的最短距離。遊戲保證兩點之間一定有邊。

作為無能力者(bug 者),當麻的計算能力肯定沒有美琴強,但他也不像在美琴面前出醜。所以他悄悄地找到了來自於bskingschool 的你,讓你幫他計算一下遊戲的答案。

第一行為兩個整數 n,m。表示地圖的點數和邊數。

第二行到第m+1 行,每行三個整數 x,y ,z ,表示 x,y 兩點之間存在一條直接路徑,長度為z 。

第m+2 行為乙個整數 q,表示機器給出了q 個提問。

第m+3 行到第m+3+q 行,每行二個整數 a,b 。表示機器所給出的兩點。

共q行,每行乙個數表示答案。

3 31 2 3

2 3 1

3 1 5

31 2

1 32 334

1樣例解釋

從1號節點直接走到至2號節點,距離為3。

從1號節點經2號節點走到至3號節點,距離為4。

從2號節點直接走到至3號節點,距離為1。

資料範圍及約定

題解:由於m只比n大一點,我們可以先找個樹出來,然後兩點之間最短路要麼經過樹上,要麼經過非樹邊

所以我們對非樹邊每個點跑個spfa,然後詢問時每個依次暴力比較,因為只有21,所以不會t

code:

1 #include2 #include3 #include4 #include5 #include6

#define n 300006

7using

namespace

std;

8struct

nodee[n],e1[n],a[n],temp[n];

11long

long

cnt1,first1[n],nxt1[n];

12void add1(long

long u,long

long v,long

long

w)19

long

long

first[n],nxt[n],cnt;

20void add(long

long u,long

long v,long

long

w)27

long

long

fa[n];

28long

long find(long

long

x)32

void merge(long

long x,long

long

y)37}38

long

long dep[n],f[n][32

];39

long

long lca(long

long x,long

long

y)46

for(long

long i=30;i>=0;i--)

50return f[x][0

];51}52

long

long

check[n],n,m,cnt_;

53void

kruskal()65}

66}67long

long vis[n],dis[50

][n];

68void spfa(long

long s,long

long

now)86}

87}88}

89}90bool cmp(const node &a,const node &b)

93long

long

distree[n];

94void dfs(long

long

x)103

}104

long

long

tot,tot_point,dian[n];

105long

long

read()

112while

(isdigit(c))

116return x*f;

117}

118int

main()

128 sort(a+1,a+m+1

,cmp);

129kruskal();

130for(long

long i=1;i<=m;i++)

141//

cout<142 f[1][0]=1

;143 dfs(1

);144

//for(int i=1;i<=tot_point;i++)

148//

}149

//for(int i=1;i<=n;i++)

152for(long

long i=1;i<=30;i++)

156}

157//

cout

//for(int i=1;i<=n;i++)

161long

long

q;162 q=read();//

dp,數論,圖論,資料結構高階演算法

163while(q--)

171 cout

;172

}173

return0;

174}

175/*

1765 6

1771 2 1

1782 3 2

1793 4 3

1804 5 4

1815 1 5

1821 3 1

1835

1841 5

1852 4

1863 4

1872 1

1883 5

189*/

over

牛客 11 01 生成樹

你有一張n個點的完全圖 即任意兩點之間都有無向邊 現在給出這張圖的兩棵生成樹 定義一次操作為 在任意一棵生成樹中刪除一條邊後再加入一條邊 必須在同一棵樹中操作 同時需要保證操作完後仍然是一棵樹 問使得兩棵樹相同的最少操作次數,若不存在合法的操作方案,輸出 1 注意 這裡的相同指的是點集與邊集均相同,...

uva 10766 生成樹計數

給出n,m,k,代表一家公司有n個部門,編號1到n,有m組關係,表示i和j不能直接聯通,k代表主管部門,問你有多少種分層方案。這道題的k沒有什麼用。include include include include include include include include include incl...

s4 7 生成樹協議

spanning tree 為了可靠,採用冗餘結構 但是透明網橋 會產生無休止迴圈的問題 冗餘交換拓撲可能帶來的問題 廣播風暴 多幀傳送 mac位址庫不穩定 生成樹協議 stp spanning tree protocol 為了維護乙個無環路的網路拓撲 新標準 rstp radia perlman ...